我在道具中有一个动态物体,我想在状态下发送
@setState
key: val
values:
another_key: value
@props.data.option: @props.data.value
但是这种方式不起作用,我找到了这个解决方案:
newState = {}
newState[@props.data.option] = @props.data.value
this.setState(newState);
但是这种方式设置了状态权的价值
最佳答案
这里的问题是,您正在处理处于状态的嵌套对象,并且当您似乎只想更新values
对象中的键的子集时,整个对象values
将被替换。最好的方法是通过set
操作使用React的不变性助手。 (https://facebook.github.io/react/docs/update.html)。
使用es6,您可以设置动态密钥:
var update = require('react-addons-update');
var newState = update(this.state, {
values: {[dynamic_key]: {$set: dynamic_value}}
});
this.setState(newState);