Sobes.tech
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);
  }
}