gpt4 book ai didi

javascript - 在 Redux 中清除数组状态

转载 作者:行者123 更新时间:2023-11-30 07:13:39 25 4
gpt4 key购买 nike

如何在 Redux 中清除数组状态?我有一个空数组的初始状态,正在添加内容。我想要一个清除它的 Action ,我尝试了以下方法,但它给了我关于我给 CLEAR_THINGS Action 的“action.payload”的“意外 token ”错误:

export default (state=[], action) => {
switch (action.type) {
case "RECEIVE_THING":
return [
...state,
action.payload
];
case "CLEAR_THINGS":
return {
...state,
action.payload // payload here is []...
};
default:
return state;
}}

如果我只是使用 [] 而不是通过 action.payload,它也会抛出错误。

最佳答案

export default (state=[], action) => {
switch (action.type) {
case "RECEIVE_THING":
return [
...state,
action.payload
];
case "CLEAR_THINGS":
return [];
default:
return state;
}}

RECEIVE_THING 操作使用对象扩展符号返回一个状态,该状态是一个数组 ([]),其中包含先前的状态 ([...state ]) 并向其添加一个新项目 ([...state, action.payload])。用于此新项目的键/属性名称只是数组的下一个索引。毕竟,它是一个数组。

在您的 CLEAR_THINGS 代码中,您正在创建一个对象 ({}),其中包含旧状态(比如说它是 ['item1']) 所以它看起来像 { '0': 'item1' }。接下来您继续使用 object shorthand notation添加更多状态,但这需要您使用单个标识符(单个词),但您使用的是点分概念(限定标识符)来访问属性。您是在指示创建一个名为 action.payload 的属性,但这是非法的,这就是您的错误来源。它在数组的情况下起作用的原因是因为在这种情况下只需要一个值,因为键是从数组的索引派生的。

你想要做的是始终返回相同类型的对象,在你的例子中,是一个数组。从 return { 开始,您已经走错了路。

关于javascript - 在 Redux 中清除数组状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39456184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com