ReactJS,ES6:使用Arrow(=>)修改状态数组'个别元素'会员,更好的方法?

时间:2016-06-03 01:36:53

标签: reactjs ecmascript-6

我有itemList作为我的状态对象数组。

    this.state = {
        .....
      itemList: [],
       .....
    }

itemList有title, desc, expState。下面的代码非常完美。我想知道是否有更好的方法,比如使用ES6的箭头。我是ReactJS和ES6的新手,所以无法弄清楚。

    var index = this.state.itemList.indexOf(item);
    item.expState = !(item.expState);
    var newItemList = itemList;
    newItemList[index] = item;
    this.setState({itemList: newItemList});

1 个答案:

答案 0 :(得分:2)

item.expState = !item.expState;
this.setState({ itemList: this.state.itemList });

上面的代码是你所拥有的简化版本(它仍然是ES5.1,因为没有地方可以使用新标准中的任何内容)。

部分

var newItemList = itemList;
newItemList[index] = item;

被完全删除,因为在JS数组中没有克隆赋值,但只有对它们的引用被赋值给变量。因此,无论如何,你正在使用相同的数组。