Sobes.tech
Middle

Proč nelze metody životního cyklu definovat pomocí šipkových funkcí?

sobes.tech AI

Odpověď od AI

V třídních komponentách React nelze metody životního cyklu definovat pomocí šipkových funkcí, protože to povede k navázání this na aktuální kontext (obvykle globální nebo undefined v režimu přísného režimu), nikoli na instanci komponenty. React tyto metody volá s určitým kontextem this, který by měl odkazovat na instanci komponenty, aby měl přístup k props, state a metodám komponenty.

class MyComponent extends React.Component {
  // Správně: 'this' bude instance komponenty
  componentDidMount() {
    console.log(this.props);
  }

  // Chybně: 'this' nebude instancí komponenty při volání Reactem
  componentDidUpdate = () => {
    // Zde je 'this' navázáno na kontext, ve kterém byla definována šipková funkce,
    // což pravděpodobně není instance komponenty při volání Reactem.
    console.log(this.state);
  }
}