Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 还原程序未返回更新状态_Javascript_Reactjs_Redux_Spread Syntax - Fatal编程技术网

Javascript 还原程序未返回更新状态

Javascript 还原程序未返回更新状态,javascript,reactjs,redux,spread-syntax,Javascript,Reactjs,Redux,Spread Syntax,我无法使减速器返回更新状态 操作(通过调试器确认)是一个对象数组,类似于:[{name:“test”},{name:“second_test”}] 我认为我的spread运算符一定出了问题,尽管我也在调试器中尝试了Object.assign(),这似乎返回了预期的结果 我的组件显然只是处于默认状态。这是我的代码。任何帮助都将不胜感激。谢谢大家! const initialState = { current: {}, all: [] } export default functi

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

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

我认为我的spread运算符一定出了问题,尽管我也在调试器中尝试了
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
    }
}

我最近遇到了这个问题(正如您所描述的),我使用列出的包解决了这个问题

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

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
    }
}

我最近遇到了这个问题(正如您所描述的),我使用列出的包解决了这个问题

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

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
    }
}

谢谢,达克雷。我可能得试试。然而,这似乎很疯狂,因为这是必要的。就减速机而言,这是最简单的。“不变性”是一个独立的软件包吗?@mossexploding是的,我同意-我曾经在我的一个类似的减速机上看过一段时间,并且在一个附带项目中体验到与您完全相同的事情。使用此软件包立即解决了我的问题,因此我想与您分享这一经验:-)。是的,
immutability helper
是一个单独的包,但我发现它在简化我的简化程序方面非常有用谢谢,Dacre。我可能得试试。然而,这似乎很疯狂,因为这是必要的。就减速机而言,这是最简单的。“不变性”是一个独立的软件包吗?@mossexploding是的,我同意-我曾经在我的一个类似的减速机上看过一段时间,并且在一个附带项目中体验到与您完全相同的事情。使用此软件包立即解决了我的问题,因此我想与您分享这一经验:-)。是的,
immutability helper
是一个单独的包,但我发现它在简化我的简化程序方面非常有用