Redux:正确调用了动作,但是reduce并没有更新状态,只是保持初始状态

时间:2019-10-12 20:38:08

标签: reactjs redux

我一直在使用React,Redux,Redux-thunk构建应用程序。 在调用动作时,reducer会正确接收有效负载和类型,但不会修改它们。

  • 我的减速机:
import EditorActionTypes from './editor.types';

const INITIAL_STATE = {
    editorModified: false,
    tabs: [
        {
            name: 'main.js',
            active: true
        },
        {
            name: 'setup.js',
            active: false
        }
    ]
};

const editorReducer = ( state = INITIAL_STATE, action ) => {
    switch (action.payload) {
        case EditorActionTypes.SELECT_TAB:
            return {
                ...state,
                tabs: [
                    ...state.tabs.map( 
                        (tab, index) => index === action.payload
                            ? tab.active = true
                            : tab.active = false
                        )
                ]
            }

        default:
            return state;
    }
};

export default editorReducer;

2 个答案:

答案 0 :(得分:3)

开关条件错误, 减速器功能应检查动作。

switch (action.type) {
        case EditorActionTypes.SELECT_TAB:
            return {

答案 1 :(得分:1)

我认为有问题的部分是:

                 ...state.tabs.map( 
                        (tab, index) => index === action.payload
                            ? tab.active = true
                            : tab.active = false
                        )

您没有从map内部的函数返回任何内容。您应该返回标签对象。

                 ...state.tabs.map( 
                        (tab, index) => ({ 
                           ...tab,
                           isActive: index === action.payload
                        }))

正如@Gangadhar Gandi指出的那样,您应该打开action.type,而不是action.payload