减速器未返回更新状态

时间:2019-02-12 01:09:35

标签: javascript reactjs redux spread-syntax

我无法使我的减速器返回更新状态。

操作(已通过调试器确认)是一个对象数组-类似于:[{name: "test"}, {name: "second_test"}]

尽管我也在调试器中尝试过Object.assign(),但似乎返回了预期的结果,我的传播运算符肯定有问题。

我的组件显然只是处于默认状态。这是我的减速器代码。任何帮助,将不胜感激。谢谢!

const initialState = {
    current: {},
    all: []
}

export default function deckReducer(state = initialState, action) {
    switch(action.type) {
        case 'CREATE_DECK':
            return {...state, all: [...state.all, action.payload]}

        case 'FETCH_DECKS':

            debugger;
            return {...state, all: action.payload}

        default: return state
    }
}

1 个答案:

答案 0 :(得分:0)

我最近(正是您所描述的)遇到了这个问题,并且我使用列出的immutability-helperhere on the ReactJS docs程序包解决了该问题。

此方法使您可以委派繁重的状态不变性和嵌套状态更新。您应该发现这可以解决您的问题:

import update from 'immutability-helper';

const initialState = {
    current: {},
    all: []
}

export default function deckReducer(state = initialState, action) {

    switch(action.type) {

        case 'CREATE_DECK': {
            /* Add payload to nested state.all list */
            return update(state, { all : { $push : [action.payload] }});
        }

        case 'FETCH_DECKS': {    
            /* Replace state.all with incoming payload */
            return update(state, { all : { $set : action.payload }});
        }

        default: return state
    }
}