reducer 的作用就是设计 state 结构,它可以给定 state 的初始值,更重要的是告诉 store,根据对应的 action 如何更新 state。 通常我们的 store 需要多个 reducer 组合,成为我们最后的 state tree
为什么要重新返回一个对象
我们可以看到 reducer 函数在拿到数据后通过 Object.assign 重新返回一个对象,直接 state.data 修改,返回state不行吗?
首先 我们默认的初始state是不能直接改变的,我们的 reducer 函数 在数据 failure 的时候 return了默认的 state,这个 initialState 是不应该被修改的。
另外,我们的react组件 会多次接受 store 传入 props,每一次都应该是一个全新的对象引用,而不是同一个引用。比如我们需要比较两次传入的 props,利用 componentWillReciveProps(nextProps) 比较 this.props 跟 nextProps,肯定是需要两个对象空间的,不然是同一个对象引用也就没法比较了。