https://facebook.github.io/react/docs/update.html
我有一个更新函数,它接收索引以及事件,以便更改数组中该特定项的值。
如何评估index
而不是在此方案中将其视为集合键?它甚至可能吗?
updateValue: function(index, e) {
var items = React.addons.update(this.state.items, {
index: {
amount: {$set: e.target.value}
}
});
this.setState({
items: items
})
}
现在这显然不起作用,因为当我想修改this.state.items['index']['amount']
索引为1时,它正在尝试更新未设置的this.state.items[1]['amount']
。
答案 0 :(得分:41)
您可以使用ES6 computed property names,index
变量看起来像这样:
updateValue(index, e) {
var items = React.addons.update(this.state.items, {
[index]: {
amount: {$set: e.target.value}
}
})
this.setState({items})
}
根据这个ES6 compatability table,React的JSX转换器在启用Harmony转换时支持它们,或者你可以使用Babel代替(从react-tools is being deprecated in favour of Babel开始)。
如果失败,您可以使用辅助函数来创建具有给定命名属性的对象:
function makeProp(prop, value) {
var obj = {}
obj[prop] = value
return obj
}
// ...
updateValue: function(index, e) {
var items = React.addons.update(this.state.items, makeProp(
index, {
amount: {$set: e.target.value}
}
))
this.setState({items: items})
}