Sobes.tech
Middle

Miért nem definiálhatók az életciklus-módszerek nyílfüggvényekkel?

sobes.tech MI

Válasz az MI-től

React osztálykomponensekben nem szabad életciklus-metódusokat nyílfüggvényekkel definiálni, mert ez a this kötéséhez vezet a jelenlegi kontextushoz (általában globális vagy undefined szigorú módban), nem pedig a komponens példányához. A React ezeket a módszereket meghatározott this kontextussal hívja meg, amelynek a komponens példányára kell mutatnia, hogy hozzáférjen a props, state és a komponens módszereihez.

class MyComponent extends React.Component {
  // Helyes: 'this' a komponens példánya lesz
  componentDidMount() {
    console.log(this.props);
  }

  // Helytelen: 'this' nem lesz a komponens példánya, amikor a React hívja
  componentDidUpdate = () => {
    // Itt a 'this' a függvény definiálásának kontextusához kötött,
    // ami valószínűleg nem a komponens példánya a React hívásakor.
    console.log(this.state);
  }
}