Sobes.tech
Middle

Prečo nie je možné definovať metódy životného cyklu pomocou šípových funkcií?

sobes.tech AI

Odpoveď od AI

V triednych komponentoch React sa metódy životného cyklu nemajú definovať pomocou šípkových funkcií, pretože to spôsobí, že this bude viazané na aktuálny kontext (zvyčajne globálny alebo undefined v režime prísneho režimu), a nie na inštanciu komponentu. React tieto metódy volá s určitým kontextom this, ktorý by mal odkazovať na inštanciu komponentu, aby mal prístup k props, state a metódam komponentu.

class MyComponent extends React.Component {
  // Správne: 'this' bude inštanciou komponentu
  componentDidMount() {
    console.log(this.props);
  }

  // Nesprávne: 'this' nebude inštanciou komponentu pri volaní Reactom
  componentDidUpdate = () => {
    // Tu je 'this' viazané na kontext, v ktorom bola definovaná šípková funkcia,
    // čo pravdepodobne nie je inštancia komponentu pri volaní Reactom.
    console.log(this.state);
  }
}