Если ваш компонент имеет состояние или содержит используемые методы значимые для компонента, то используйте Class component. В других случаях используйте Functional component.
Функциональный компонент - это обычная функция JavaScript, возвращающая JSX.
function Welcome(props) {
return <h1>Привет, {props.name}</h1>
}Эта функция — компонент, потому что она получает данные в одном объекте («пропсы») в качестве параметра и возвращает React-элемент. Мы будем называть такие компоненты «функциональными», так как они буквально являются функциями.
Компонент класса - это расширяемый класс JavaScript, React.
class Welcome extends React.Component {
render() {
return <h1>Привет, {this.props.name}</h1>
}
}Классы используются, когда нужно хранить состояние через props . Пропсы доступны через this.props. Классы наследуют React.component , а через метод render() возвращается элемент.
Преобразование функционального компонента в классовый компонент
- Создаём ES6-класс с таким же именем, указываем
React.Componentв качестве родительского класса - Добавим в класс пустой метод
render() - Перенесём тело функции в метод
render() - Заменим
propsнаthis.propsв телеrender() - Удалим оставшееся пустое объявление функции
class Clock extends React.Component {
render() {
return (
<div>
<h1>Привет, мир!</h1>
<h2>Сейчас {this.props.date.toLocaleTimeString()}.</h2>
</div>
)
}
}Компонент никогда не должен что-то записывать в свои пропсы — вне зависимости от того, функциональный он или классовый.