2015-12-10 14 views
7

Esiste un modo per utilizzare il valore di una variabile stringa come chiave per setState()?React.js setState() con variabile per la chiave all'interno del ciclo?

getInitialState: function() { 
    return { 
     foo: '', 
     bar: '' 
    } 
} 

someOtherHandler: function() { 
    var arr = ['foo', 'bar']; 
    var _this = this; 
    var number = Math.random(); 

    for (var i in arr) { 
     _this.setState({ arr[i]: number }); 
    } 

} 

Reagire getta un errore di sintassi con quanto sopra, e l'impostazione arr [i] ad una variabile finisce l'impostazione di un nuovo stato con il nome di quella variabile.

risposta

14

È possibile creare l'oggetto prima di chiamare setState.

var newState = {}; 
newState[i] = number; 
_this.setState(newState); 

In alternativa, se si utilizza ES6, si potrebbe fare uso di un computed property.

_this.setState({ [i]: number }); 

Tuttavia questo codice chiamerà setState più volte, è più efficiente per chiamare solo una volta. Costruisci l'oggetto stato aggiornato, quindi applicalo.

var newState = {}; 

for(var i in arr) { 
    newState[i] = number; 
} 

this.setState(newState); 
+0

Grazie mille! In realtà avevo appena incontrato una domanda simile che essenzialmente mi indicava la stessa cosa: http://stackoverflow.com/questions/29280445/reactjs-setstate-with-a-dynamic-key-name – cyoung

Problemi correlati