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

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

Компонент класса имеет состояние и может иметь конструктор и состояние.

Конструктор — это особый вид функции, которая вызывается при инициализации компонента. Мы определяем конструктор, написав constructor().

По правилу наследования вам нужно вызвать родительский конструктор, написав super() в дочернем конструкторе.

Конструктор используется для установки состояния класса. Состояние — это объект, который содержит свойства класса.

Пример

import React from 'react';
import ReactDOM from 'react-dom';

export default class Book extends React.Component {
    constructor(props) {
        super(props);
    }

    render() {
        return <h1>This is a book</h1>
    }
}
ReactDOM.render(<Book/>, document.getElementById('root'));

Компонент класса React с состоянием

Состояние используется для хранения данных в компоненте. Он изменчив по своей природе, поэтому каждый раз, когда его значение изменяется, компонент перерисовывается.

В приведенном ниже примере мы сохраняем две переменные состояния: автор и год. Доступ к ним можно получить через this.state.author и this.state.year соответственно.

import React from 'react';
import ReactDOM from 'react-dom';

export default class Book extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            author: 'Michael Jordan',
            year: 2020
        }
    }

    render() {
        return <div>
            <h1>This is a book</h1>
            <h2>Author: {this.state.author}</h2>
            <h2>Year: {this.state.year}</h2>
        </div>
    }
}
ReactDOM.render(<Book/>, document.getElementById('root'));

Выход

Компонент класса React с реквизитом

Реквизиты используются для передачи данных компоненту. Свойства компонентов похожи на аргументы функции. Они записываются так же, как атрибуты HTML-элемента.

this.props возвращает все реквизиты компоненту. В приведенном ниже примере index и author — это 2 реквизита, которые передаются компоненту Book (см. ReactDOM.render()), и доступ к ним осуществляется через this.props.index и this.props.author в render().

import React from 'react';
import ReactDOM from 'react-dom';

export default class Book extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            author: 'Michael Jordan',
            year: 2020
        }
    }

    render() {
        return <div>
            <h1>This is a book with index: {this.props.index}</h1>
            <h2>Author: {this.props.author}</h2>
        </div>
    }
}

ReactDOM.render(<div>
    <Book index={1} author={'Michael'}/>
    <Book index={2} author={'John'}/>
</div>, document.getElementById('root'));

Выход

Надеюсь, что эта статья прояснит некоторые распространенные заблуждения начинающих программистов о свойствах и состоянии. Посмотрите эту публикацию, чтобы узнать еще больше интересных статей и статей, связанных с интервью.