Middle
Защо методите на жизнения цикъл не могат да бъдат дефинирани с стрелкови функции?
sobes.tech AI
Отговор от AI
В класовите компоненти на React не трябва да дефинирате методи за жизнения цикъл с помощта на стрелкови функции, тъй като това ще доведе до свързване на this към текущия контекст (обикновено глобален или undefined в строг режим), а не към инстанцията на компонента. React извиква тези методи с определен контекст this, който трябва да сочи към инстанцията на компонента, за да има достъп до props, state и методите на компонента.
class MyComponent extends React.Component {
// Правилно: 'this' ще бъде инстанцията на компонента
componentDidMount() {
console.log(this.props);
}
// Грешно: 'this' няма да бъде инстанцията на компонента при извикване от React
componentDidUpdate = () => {
// Тук 'this' е свързано с контекста, в който е дефинирана стрелковата функция,
// което вероятно не е инстанцията на компонента при извикване от React.
console.log(this.state);
}
}