Reactjs @setState具有动态键值

时间:2016-03-09 21:25:43

标签: javascript reactjs javascript-objects

我在道具中有一个动态对象,我想以状态发送

@setState
  key: val
  values:
    another_key: value
    @props.data.option: @props.data.value

但这种方法不起作用,我找到了这个解决方案:

  newState = {}
  newState[@props.data.option] = @props.data.value
  this.setState(newState);

但是这种方式设置了状态

的权利值

1 个答案:

答案 0 :(得分:4)

这里的问题是您正在处理状态中的嵌套对象,并且当您似乎只想更新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);