我正在尝试从这里学习 Redux 和 es7 ,但无法理解作者关于以下代码的以下观点:
另请注意,此 ES7 对象扩展表示法适合我们的示例,因为它在我们的状态上做 { message: action.value } 的浅拷贝(这意味着状态
的第一级属性被第一级属性完全覆盖 - 而不是优雅地合并 - {消息:action.value})。
var reducer_3 = function (state = {}, action) {
console.log('reducer_3 was called with state', state, 'and action', action)
switch (action.type) {
case 'SAY_SOMETHING':
return {
...state,
message: action.value
}
default:
return state;
}
}
当作者使用 Object Spread 表示法简单地将message:action.value 键/值对添加到原始状态时,状态的第一级属性是如何被 {message:action.value} 覆盖的?由于 Object Spread 表示法,状态的第一级属性仍然存在,对吧?因此,如果原始状态是{a:"foo", b:"bar"}
调度动作后的新状态,对SAY_SOMETHING
吗{a:"foo", b:"bar", message: 'SAY_SOMETHING}
?什么都没有被替换。