reducer - 更新完成状态

reducer - update the complete state

我想在 reducer 中添加一个案例,我想在其中设置完整状态,而不是任何特定属性。

更新特定属性[SET_SELECTED_PAGE,UPDATE_MESSAGE_DISPLAYED] 工作正常。但是当我尝试 SET_INIT_DATA 时,我得到错误 Parsing error: Unexpected token, expected ","SET_INIT_DATA 的有效负载将完成 json。

我的状态会像

{
  "user": "",
  "selectedPage": "home",
  "message": "Message from admin",
  ...
}

代码:

 const reducer = (state, action) => {
      switch (action.type) {
        case "SET_SELECTED_PAGE":
          return {
             ...state,
            selectedPage: action.payload 
          };
        case "UPDATE_MESSAGE_DISPLAYED":
          return {
              ...state,
              messageDisplayed: action.payload 
            };
      case "SET_INIT_DATA":
          return {
              action.payload // getting error Parsing error: Unexpected token, expected ","
           }; 
        default:
          throw new Error();
      }
    };

大概应该是:

      case "SET_INIT_DATA":
          return action.payload;

你的没有工作,因为它是一个语法错误。 JS 对象初始化需要一个键值对(或 object property short form),或者扩展运算符。你两者都没有提供,所以这是一个语法错误。

由于 action.payload 是一个合适的对象,因此它可以很好地从 reducer return 中获取,而无需创建包装器对象,因为您希望对象保持原样。