在此问题之前我假设...state, { /* ... */ }
与Object.assign({}, state, { /* ... */ })
的等效es6语法相同,但我发现在同一个文件中使用这两个版本的回购越来越多,因此我现在有点困惑并认为它们服务于不同目的。我尝试在线查找有关此信息的信息,但无法找到有关这些信息有何不同的明确解释。
示例:https://github.com/choonkending/react-webpack-node/blob/master/app/reducers/topic.js
答案 0 :(得分:3)
我认为
的es6语法相同...state, { /* ... */ }
与Object.assign({}, state, { /* ... */ })
您的第一个语法缺少上下文。在您链接的代码中,它在数组文字中使用:
[...state, { /* ... */ }]
它是构造多个数组元素的spread element。
整件事确实创建了一个数组,而不是Object.assign({}, …)
之类的对象。
传播语法不能用于对象文字(在ES6中,将来会有草稿来改变它)。
答案 1 :(得分:0)
您可能还会看到此
[...state, Object.assign({}, obj.attribute) ]
这是传递给数组的对象放置在状态上的新属性,在redux中,这通常是一个动作。这特别聪明,因为首先创建对象,然后在数组上查找元素,然后创建或替换它。