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);
}
}