这可能是Ruby做得更好的事情,但是有一种更好的方法来编写此Javascript代码(用于React):
handleCellChange: function(rowIdx, prop, val) {
var updateObj = {};
updateObj.data = {};
updateObj.data[rowIdx] = {};
updateObj.data[rowIdx][prop] = { $set: val };
var newState = React.addons.update(this.state, updateObj);
最佳答案
在ES6中,可以使用计算出的属性名称:
updateObj = { data: { [rowIdx]: { [prop]: {$set: val} } } };
您可以在每晚的Traceur或Firefox等中使用它(但尚未在node --harmony中使用)。
这是将为您转换此语法的东西:https://www.npmjs.org/package/es6-computed-property-keys。
有关更多信息,请参见http://wiki.ecmascript.org/doku.php?id=harmony:object_literals#object_literal_computed_property_keys。另请参阅http://kangax.github.io/compat-table/es6/#中的“计算属性”项。