有没有办法使用字符串变量的值作为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抛出了上面的语法错误,将arr [i]设置为变量最终会设置一个带有该变量名称的新状态。
答案 0 :(得分:18)
您可以在调用setState
之前创建对象。
var newState = {};
newState[i] = number;
_this.setState(newState);
或者,如果您使用的是ES6,则可以使用computed property。
_this.setState({ [i]: number });
但是,此代码会多次调用setState
,只调用一次会更有效。构建更新的状态对象,然后应用它。
var newState = {};
for(var i in arr) {
newState[i] = number;
}
this.setState(newState);