2015-08-06 10 views
22

È legale?React - setState in componentWillReceiveProps

componentWillReceiveProps: function(nextProps) { 
     if (typeof nextProps.contact != 'undefined') { 
      this.setState({forename: nextProps.contact.forename}); 
      this.setState({surname: nextProps.contact.surname}); 
      this.setState({phone: nextProps.contact.phone}); 
      this.setState({email: nextProps.contact.email}); 
     } 
    } 

Perché io non so come riempire i miei input e di essere ancora in grado che l'utente può modificare gli ingressi. Quindi mi è venuta in mente questa soluzione invece di provare a manipolare il this.props.

Qualche suggerimento?

risposta

25

Il tuo codice è legale secondo react documentation.

Si può anche considerare di mettere questo codice all'interno del metodo getInitialState come in base allo another react doc inizializzando da oggetti di scena non è un anti-modello.

È inoltre possibile sostituire diverse chiamate con una chiamata setState metodo:

this.setState({forename: nextProps.contact.forename, 
       surname: nextProps.contact.surname, 
       phone: nextProps.contact.phone, 
       email: nextProps.contact.email}); 
1

E Babelify ove possibile :)

componentWillReceiveProps({ 
    contact: { 
    forename, 
    surname, 
    phone, 
    email, 
    } = {}, 
}) { 
    if (forename !== undefined) { 
    this.setState({ 
     forename, 
     surname, 
     phone, 
     email, 
    }); 
    } 
} 
Problemi correlati