Проверяет понимание жизненного цикла React-компонентов и порядка вызова методов при монтировании и обновлении.
React рендерит компоненты рекурсивно, начиная с корневого. Для классовых компонентов жизненный цикл включает несколько фаз: монтирование, обновление и размонтирование. При монтировании первым вызывается constructor, затем render, после чего React обновляет DOM и вызывает componentDidMount. Для функциональных компонентов порядок проще: сначала выполняется тело функции (это аналог render), затем React обновляет DOM, и только после этого запускаются эффекты из useEffect.
class MyComponent extends React.Component {
constructor(props) {
super(props);
console.log('1. constructor');
}
componentDidMount() {
console.log('3. componentDidMount');
}
render() {
console.log('2. render');
return <div>Hello</div>;
}
}function MyComponent() {
console.log('1. render (body)');
useEffect(() => {
console.log('2. useEffect (after mount)');
}, []);
return <div>Hello</div>;
}При изменении состояния или пропсов сначала вызывается render (или тело функции), затем React обновляет DOM, и после этого вызывается componentDidUpdate (для классов) или useEffect с соответствующими зависимостями (для функций). Важно помнить, что useEffect выполняется асинхронно после отрисовки, поэтому не блокирует рендеринг.
Вывод: Понимание порядка вызова методов помогает избежать ошибок при работе с побочными эффектами и оптимизировать производительность, особенно при использовании useEffect с зависимостями.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию