React.js setState() 与循环内的键变量?

Posted

技术标签:

【中文标题】React.js setState() 与循环内的键变量?【英文标题】:React.js setState() with variable for key inside loop? 【发布时间】:2016-03-15 15:14:24 【问题描述】:

有没有办法使用字符串变量的值作为 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] 设置为变量最终会使用该变量的名称设置新状态。

【问题讨论】:

【参考方案1】:

您可以在调用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);

【讨论】:

非常感谢!实际上,我刚刚遇到了一个类似的问题,基本上指向了同一件事:***.com/questions/29280445/…

以上是关于React.js setState() 与循环内的键变量?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 socket.io 回调 React.js 中调用 setState

React JS 视图未在 setState() 上重新渲染

从源码的角度再看 React JS 中的 setState

在 React JS 的 this.setState 的回调中使用 this.setState?

React.js状态值为数组,怎么使用setState比较合适

即使在调用 setState 之后,React.js 子状态也不会重新渲染?