清除Redux中的数组状态

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,它也会抛出错误.

DDS*_*DDS 5

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 {,你已经走错了路.