这可能是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/#中的“计算属性”项。

09-20 05:26