React — это библиотека JavaScript для создания пользовательских интерфейсов. React был разработан Facebook и специально оптимизирован для больших и сложных приложений.

React использует «компонентный» подход. Компонент представляет собой определенную часть пользовательского интерфейса. Например, кнопка может быть полем формы, а пункт меню может быть компонентом.

Компоненты могут вызываться другими компонентами, такими как другие компоненты и функции JavaScript. Компоненты могут иметь специальные функции, специально предназначенные для реагирования на такие события, как взаимодействие с пользователем или обновление данных.

Приложения React представляют собой комбинацию JavaScript, HTML и CSS. React повышает производительность, отслеживая состояния компонентов и обновляя только те компоненты, которые изменяются. React также можно использовать для разработки мобильных приложений, которые также можно использовать на других платформах, таких как React Native.

Некоторые из ключевых особенностей React:

JSX: Компоненты React определяются с помощью JSX, HTML-подобного языка, написанного в коде JavaScript.

Виртуальный DOM: React использует виртуальный DOM (объектную модель документа) для отслеживания изменяющихся компонентов. Это позволяет обновлять только измененные компоненты без перезагрузки всей страницы.

Жизненный цикл компонента: компоненты React имеют жизненный цикл, который охватывает различные этапы, такие как создание, обновление или уничтожение компонента.

React Hooks: Хуки — это функции, используемые для управления состояниями и свойствами компонентов.

React — это простая в освоении библиотека для тех, кто знаком с JavaScript. React поддерживается большим сообществом, и доступно множество ресурсов и документации.

Приведем примеры основных функций React.

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>React JavaScript Library Fundamentals</title>
</head>

<body>

    <!-- container for app -->
    <div id="root"></div>

    <!-- load react -->
    <script src="https://unpkg.com/react@18/umd/react.development.js" crossorigin></script>
    <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" crossorigin></script>

    <!-- react app -->
    <script>
        // it prevents the code we write from going outside the JavaScript standart rules
        'use strict';

        // this is react element
        const e = React.createElement;

        /**
         * this is react component
         */
        class LikeButton extends React.Component {
            // run when the component is created
            constructor(props) {
                // assigning values to the variable of its superclass ( React.Component )
                super(props);
                // an object to hold the state information of this component
                this.state = { liked: false };
            }

            // render is run once
            render() {
                // javascript expression to check if conditions are true 
                if (this.state.liked) {
                    return 'You liked this.';
                }

                // html content to display when rendering the component
                return e(
                    // type | we create a button element
                    'button',
                    // props | run when the component is created like constractor
                    { onClick: () => this.setState({ liked: true }) },
                    // conntent or other elements
                    'Like'
                );
            }
        }

        // the name of out html tag
        const containerName = "root";
        // it allow us to call an existing object in an html document
        const domContainer = document.getElementById(containerName);
        // allows you to create a root to display React components inside a browser DOM node
        const root = ReactDOM.createRoot(domContainer);
        // displays the react root in the DOM node
        root.render(e(LikeButton));
    </script>

</body>

</html>

Вы можете создать его в базовом проекте React с помощью Node.js.

npx create-react-app fundamentals

JSX: JSX — это синтаксис для описания компонентов React, структура которого похожа на HTML.

import React from 'react';

function App() {
  return (
    <div>
      <h1>Hello World!</h1>
      <p>Welcome to my React app.</p>
    </div>
  );
}

export default App;

ВиртуальныйДОМ:

React использует виртуальный DOM для отслеживания измененных компонентов. Это позволяет обновлять только измененные компоненты без перезагрузки всей страницы.

import React, { useState } from "react";

/**
 * this is react component
 */
export default function CounterButton() {
    // run when the component is created

    // we used state and default value = 0
    const [count, setCount] = useState(0)

    // an increment function
    function increment() {
        setCount(count + 1);
    }

    // html content to display when rendering the component
    return (
        // conntent or other elements
        <div>
            <p>Count {count}</p>
            <button onClick={increment}>Increment</button>
        </div>
    );
}

Жизненный цикл компонента:

Компоненты React имеют жизненный цикл, который охватывает различные этапы, такие как создание, обновление или уничтожение компонента. Это полезно, когда компоненты интерактивны.

import React, { Component } from "react";

/**
 * this is react component
 */
export default class Timer extends Component {
    // run when the component is created
    constructor(props) {
        // assigning values to the variable of its superclass ( React.Component )
        super(props);
        // an object to hold the state information of this component
        this.state = { counter: 0, increment: props.increment };
    }

    // invoked immediately after a component is mounted
    componentDidMount() {
        this.timerID = setInterval(
            () => this.tick(),
            1000
        );
    }

    // invoked just before a component is dissembled and destroyed
    componentWillUnmount() {
        clearInterval(this.timerID);
    }

    // main function of this component
    tick() {
        // set current state

        // normal function expressions
        // this.setState(function (state, props) {
        //     return {
        //         counter: state.counter + props.increment
        //     }
        // });

        // Arrow function expressions is similar
        this.setState((state, props) => ({
            counter: state.counter + props.increment
        }));

    }

    // render is run once
    render() {
        // html content to display when rendering the component
        return (
            // conntent or other elements
            <div>
                <p>Timer {this.state.counter}</p>
            </div>
        );
    }
}

/**
 * component default probs
 */
Timer.defaultProps = {
    increment: 1
};

Хуки — это функции, используемые для управления состояниями и свойствами компонентов. Это позволяет писать компоненты проще и проще.

import React, { useEffect, useState } from "react";

/**
 * this is react component
 * @param {*} props component default probs
 * @returns Component 
 */
export default function Timer2(props) {
    // run when the component is created

    // assigning values to the variable of its superclass ( React.Component )
    const { increment } = props

    // an object to hold the state information of this component
    const [state, setState] = useState({ counter: 0, increment: increment })

    // invoked immediately after a component is mounted
    useEffect(() => {

        const timerID = setInterval(
            () => tick(),
            1000
        );

        // invoked just before a component is dissembled and destroyed
        return () => {
            clearInterval(timerID)
        }
    })

    // main function of this component
    function tick() {
        // set current state

        // normal function expressions
        // setState(function (state, props) {
        //     return {
        //         counter: state.counter + props.increment
        //     }
        // });

        // Arrow function expressions is similar
        setState((state) => ({
            counter: state.counter + increment
        }));

    }

    // html content to display when rendering the component
    return (
        // conntent or other elements
        <div>
            <p>Timer {state.counter}</p>
        </div>
    );
}

/**
 * component default probs
 */
Timer2.defaultProps = {
    increment: 1
};

Эти примеры показывают несколько примеров основных функций React. Конечно, у React есть и другие возможности, и эти примеры — лишь отправная точка.