Nei documenti di risposta perché il binding di * this * è preferibile rispetto alle funzioni di freccia per i gestori di eventi?

0

Nei documenti React, le funzioni di costruzione dei componenti di classe contengono linee in cui this è esplicitamente associato per i gestori di eventi, ad es. nei documenti per la gestione degli eventi

class Toggle extends React.Component {
  constructor(props) {
    super(props);
    this.state = {isToggleOn: true};

    // This binding is necessary to make 'this' work in the callback
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick() {
    this.setState(prevState => ({
      isToggleOn: !prevState.isToggleOn
    }));
  }

  ...
}

Quando si utilizzano le funzioni di freccia, il binding non è più richiesto i.e

class Toggle extends React.Component {
  constructor(props) {
    super(props);
    this.state = {isToggleOn: true};
  }

  handleClick = () => {
    this.setState(prevState => ({
      isToggleOn: !prevState.isToggleOn
    }));
  }
  ...
}

C'è una buona ragione per preferire il binding esplicito rispetto alle funzioni di freccia?

    
posta topher 02.10.2017 - 14:49
fonte

1 risposta

1

A meno che tu non stia utilizzando bind(this) e / o le funzioni freccia direttamente nella funzione render non ci sono differenze di rendimento e le ragioni per cui è presente nella documentazione sono molto probabilmente puramente storiche.

Scegli uno stile e aderisci ad esso. Rimani coerente, non mescolare entrambi e starai bene.

    
risposta data 02.10.2017 - 15:40
fonte

Leggi altre domande sui tag