Is there a way to use a string variable's value as the key for setState()?
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 });
}
}
React throws a syntax error with the above, and setting arr[i] to a variable ends up setting a new state with that variable's name.
Is there a way to use a string variable's value as the key for setState()?
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 });
}
}
React throws a syntax error with the above, and setting arr[i] to a variable ends up setting a new state with that variable's name.
Share Improve this question asked Dec 10, 2015 at 5:17 cy23cy23 1,2411 gold badge10 silver badges8 bronze badges1 Answer
Reset to default 22You can create the object before calling setState
.
var newState = {};
newState[i] = number;
_this.setState(newState);
Alternatively if you are using ES6, you could make use of a computed property.
_this.setState({ [i]: number });
However this code will call setState
multiple times, it's more efficient to only call it once. Build the updated state object, then apply it.
var newState = {};
for(var i in arr) {
newState[i] = number;
}
this.setState(newState);