...... state,{}和Object.assign({},state,{}之间的区别

时间:2016-05-19 12:05:16

标签: javascript reactjs immutability redux

在此问题之前我假设...state, { /* ... */ }Object.assign({}, state, { /* ... */ })的等效es6语法相同,但我发现在同一个文件中使用这两个版本的回购越来越多,因此我现在有点困惑并认为它们服务于不同目的。我尝试在线查找有关此信息的信息,但无法找到有关这些信息有何不同的明确解释。

示例:https://github.com/choonkending/react-webpack-node/blob/master/app/reducers/topic.js

2 个答案:

答案 0 :(得分:3)

  

我认为...state, { /* ... */ }Object.assign({}, state, { /* ... */ })

的es6语法相同

您的第一个语法缺少上下文。在您链接的代码中,它在数组文字中使用:

[...state, { /* ... */ }]

它是构造多个数组元素的spread element

整件事确实创建了一个数组,而不是Object.assign({}, …)之类的对象。

传播语法不能用于对象文字(在ES6中,将来会有草稿来改变它)。

答案 1 :(得分:0)

您可能还会看到此

[...state, Object.assign({}, obj.attribute) ]

这是传递给数组的对象放置在状态上的新属性,在redux中,这通常是一个动作。这特别聪明,因为首先创建对象,然后在数组上查找元素,然后创建或替换它。