Mab*_*boo 1 javascript reactjs react-native redux react-redux
如何清除Redux中的数组状态?我有一个空数组的初始状态,并且正在添加内容.我想要一个只清除它的动作,我尝试了以下方法,但是它给了我关于"action.payload"的"意外令牌"错误,我给CLEAR_THINGS操作:
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;
}}
Run Code Online (Sandbox Code Playgroud)
如果我只使用[]而不是通过action.payload,它也会抛出错误.
export default (state=[], action) => {
switch (action.type) {
case "RECEIVE_THING":
return [
...state,
action.payload
];
case "CLEAR_THINGS":
return [];
default:
return state;
}}
Run Code Online (Sandbox Code Playgroud)
该RECEIVE_THING操作使用对象扩展表示法返回一个状态,该状态是一个[]包含先前状态([...state])的数组()并向其添加一个新项([...state, action.payload]).用于此新项的键/属性名称只是数组的下一个索引.毕竟,它是一个阵列.
在您的代码中,CLEAR_THINGS您正在创建一个{}包含旧状态的对象()(['item1']就像它一样),所以它看起来像{ '0': ['item1'] }.接下来,您将继续使用对象简写表示法来添加更多状态,但这需要您使用单个标识符(单个单词),但您使用点状概念(限定标识符)来访问属性.你有点指示一个名为create的名字,action.payload但这是非法的,这就是你的错误所在.它在数组的情况下工作的原因是因为在这种情况下只需要一个值,因为密钥是从数组的索引派生的.
您想要做的是总是返回相同类型的对象,在您的情况下,返回一个数组.从开始return {,你已经走错了路.
| 归档时间: |
|
| 查看次数: |
5140 次 |
| 最近记录: |