1

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

更新特定属性 [ 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();
      }
    };
4

1 回答 1

2

应该是:

      case "SET_INIT_DATA":
          return action.payload;

你的没有用,因为它是一个语法错误。JS 对象初始化需要键、值对(或对象属性简写形式)或扩展运算符。你没有提供,所以这是一个语法错误。

因为action.payload它是一个合适的对象,所以它可以很好地从减速器返回,而无需创建包装器对象,因为您希望对象保持原样。

于 2020-10-11T04:24:17.880 回答