首页 > 解决方案 > 关于如何在 Redux 中正确使用 reducer 的困惑

问题描述

我正在学习 Redux,想正确理解 reducer 的工作原理。如果您查看名为的减速器titleReducer

const initialState={
titleColor: null,
}

const titleReducer = (state = initialState, action) => {

  switch (action.type) {
    case TURN_TITLE_GREEN: 
      return {
        ...state,
        titleColor: 'green'
      }
    case UPDATE_TITLE: 
      return {
        ...state,
        title: action.payload
      }
    default: return state;
  }
}

所以,我想对上面的代码提出一些问题。首先,假设有三个reducer:reducer1。reducer2 和 titleReducer(我知道愚蠢的例子,但请耐心等待)。问题是为什么即使 titleReducer 的状态只有一个属性“titleColor”,我们还需要使用 ...state 创建新的状态副本。如果我们只使用:

{
            title: action.payload
          }

每次 titleReducer 获得“TURN_TITLE_GREEN”动作时,第二个问题都可以,reducer 会采用先前的状态并创建一个新副本并发送回组件。问题是“之前的状态是从哪里获取的?我的意思是,当 titleReducer 收到 TURN_TITLE_GREEN 的操作时,它是否会创建新副本,同时将 'titleColor: 'green' 置于将作为下一次之前的状态。是这样吗?

标签: reactjsredux

解决方案


推荐阅读