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 中获取,而无需创建包装器对象,因为您希望对象保持原样。
我想在 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 中获取,而无需创建包装器对象,因为您希望对象保持原样。