Sobes.tech
Middle

Perché i metodi del ciclo di vita non possono essere definiti con funzioni freccia?

sobes.tech AI

Risposta dell'AI

Nei componenti di classe React, i metodi del ciclo di vita non devono essere definiti usando funzioni freccia, perché ciò porterà al binding di this al contesto corrente (di solito globale o undefined in modalità strict), e non all'istanza del componente. React chiama questi metodi con un contesto this definito, che dovrebbe puntare all'istanza del componente per accedere a props, state e ai metodi del componente.

class MyComponent extends React.Component {
  // Corretta: 'this' sarà l'istanza del componente
  componentDidMount() {
    console.log(this.props);
  }

  // Errata: 'this' non sarà l'istanza del componente quando chiamato da React
  componentDidUpdate = () => {
    // Qui, 'this' è legato al contesto in cui è stata definita la funzione freccia,
    // che probabilmente non è l'istanza del componente al momento della chiamata.
    console.log(this.state);
  }
}