Latest web development tutorials

Reagire ciclo di vita dei componenti

In questo capitolo discuteremo il ciclo di vita React componenti.

Ciclo di vita di un componente può essere divisa in tre stati:

  • Montaggio: vero DOM è stato inserito
  • Aggiornamento: in fase di ri-rendering
  • Smontaggio: vero DOM è stato rimosso

Il metodo del ciclo di vita sono:

  • componentWillMount prima del rendering della chiamata, il servizio lato client anche.

  • componentDidMount: dopo la prima chiamata a rendere solo il client.Dopo il componente è stato generato corrispondente struttura DOM, può accedere attraverso this.getDOMNode (). Se si desidera utilizzare con altri framework JavaScript, è possibile chiamare questo metodo setTimeout, setInterval o inviare richieste AJAX, ecc (operazioni di unità diverse per evitare il blocco dell'interfaccia utente).

  • componentWillReceiveProps viene chiamato quando il componente riceve un nuovo puntello.Questo metodo non verrà chiamato durante l'inizializzazione di rendering.

  • shouldComponentUpdate restituisce un valore booleano.Si chiama quando il componente riceve nuovi puntelli o stato. Non è chiamata inizializzazione o utilizzare FORCEUPDATE.
    Esso può essere utilizzato quando non è necessario confermare i componenti aggiornati.

  • componentWillUpdate nel componente riceve nuovi puntelli o stato, ma non ha alcun rendering viene chiamato.Non verrà chiamato durante l'inizializzazione.

  • Dopo aver completato l'aggiornamento dei componenticomponentDidUpdate chiamato immediatamente.Non verrà chiamato durante l'inizializzazione.

  • componentWillUnmount immediatamente chiamato quando il componente viene rimosso dal DOM.

Una descrizione dettagliata di questi metodi, si può fare riferimento alla documentazione ufficiale .

Gli esempi che seguono Dopo componenti Ciao sono caricati, insieme con un metodo timer componentDidMount ogni 100 millisecondi trasparenza componente di ripristino e ri-rappresentazione:

var Hello = React.createClass({
  getInitialState: function () {
    return {
      opacity: 1.0
    };
  },

  componentDidMount: function () {
    this.timer = setInterval(function () {
      var opacity = this.state.opacity;
      opacity -= .05;
      if (opacity < 0.1) {
        opacity = 1.0;
      }
      this.setState({
        opacity: opacity
      });
    }.bind(this), 100);
  },

  render: function () {
    return (
      <div style={{opacity: this.state.opacity}}>
        Hello {this.props.name}
      </div>
    );
  }
});

ReactDOM.render(
  <Hello name="world"/>,
  document.body
);

Prova »

Gli esempi che seguono vengono inizializzatistato, setNewnumberper l'aggiornamentodello stato.Tutti i componenti del ciclo di vitadei contenuti.

var Button = React.createClass({
  getInitialState: function() {
    return {
      data:0
    };
  },
  setNewNumber: function() {
    this.setState({data: this.state.data + 1})
  },
  render: function () {
      return (
         <div>
            <button onClick = {this.setNewNumber}>INCREMENT</button>
            <Content myNumber = {this.state.data}></Content>
         </div>
      );
    }
})
var Content = React.createClass({
  componentWillMount:function() {
      console.log('Component WILL MOUNT!')
  },
  componentDidMount:function() {
       console.log('Component DID MOUNT!')
  },
  componentWillReceiveProps:function(newProps) {
        console.log('Component WILL RECIEVE PROPS!')
  },
  shouldComponentUpdate:function(newProps, newState) {
        return true;
  },
  componentWillUpdate:function(nextProps, nextState) {
        console.log('Component WILL UPDATE!');
  },
  componentDidUpdate:function(prevProps, prevState) {
        console.log('Component DID UPDATE!')
  },
  componentWillUnmount:function() {
         console.log('Component WILL UNMOUNT!')
  },

    render: function () {
      return (
        <div>
          <h3>{this.props.myNumber}</h3>
        </div>
      );
    }
});
ReactDOM.render(
   <div>
      <Button />
   </div>,
  document.getElementById('example')
);

Prova »