Preact предоставляет эффективную и компактную реализацию реактивного подхода к созданию пользовательских интерфейсов. В основе его работы лежат классовые и функциональные компоненты, но понимание методов жизненного цикла классовых компонентов критично для управления состоянием, оптимизации рендеринга и интеграции с внешними библиотеками.
Жизненный цикл компонента можно разделить на три ключевых фазы:
props) или состояние
(state).Каждая фаза предоставляет набор методов, которые вызываются Preact в определённой последовательности.
Конструктор (constructor)
this.state и установить связи с внешними сервисами.import { Component } from 'preact';
class Example extends Component {
constructor(props) {
super(props);
this.state = { counter: 0 };
this.increment = this.increment.bind(this);
}
increment() {
this.setState({ counter: this.state.counter + 1 });
}
}
componentWillMount (устаревший, используется
редко)
constructor или componentDidMount.componentDidMount
componentDidMount() {
fetch('/api/data')
.then(res => res.json())
.then(data => this.setState({ data }));
}
Обновление компонента может быть вызвано изменением
props или state. Preact предоставляет
следующие методы для контроля процесса:
componentWillReceiveProps(nextProps)
props.getDerivedStateFromProps.componentWillReceiveProps(nextProps) {
if (nextProps.value !== this.props.value) {
this.setState({ updatedValue: nextProps.value });
}
}
shouldComponentUpdate(nextProps, nextState)
true, если компонент должен обновиться,
false — если нет.shouldComponentUpdate(nextProps, nextState) {
return nextState.counter !== this.state.counter;
}
componentWillUpdate(nextProps, nextState)
componentDidUpdate(prevProps, prevState)
componentDidUpdate(prevProps, prevState) {
if (prevState.counter !== this.state.counter) {
console.log('Счетчик обновлен');
}
}
componentWillUnmount
componentWillUnmount() {
clearInterval(this.timer);
}
componentDidMount и
componentWillUnmount.shouldComponentUpdate.componentWillReceiveProps и
componentWillUpdate постепенно устаревают, предпочтительно
использовать новые методы или функциональные хуки
(useEffect в функциональных компонентах).constructor → render → componentDidMount при монтировании и
componentWillReceiveProps → shouldComponentUpdate → componentWillUpdate → render → componentDidUpdate
при обновлении.Монтирование:
constructor()
→ componentWillMount()
→ render()
→ componentDidMount()
Обновление:
componentWillReceiveProps()
→ shouldComponentUpdate()
→ componentWillUpdate()
→ render()
→ componentDidUpdate()
Размонтирование:
componentWillUnmount()
Эта схема помогает визуализировать последовательность вызовов и правильно распределять логику по методам.
shouldComponentUpdate.Методы жизненного цикла в Preact предоставляют мощные инструменты для управления состоянием, оптимизации и интеграции с внешними ресурсами. Глубокое понимание их работы критично для создания масштабируемых и отзывчивых интерфейсов.