Reducer不会使用被破坏的属性更新状态

时间:2018-04-25 09:35:38

标签: reactjs react-redux

我有以下行动:

{type: "SET_GROUP", group: 68, categories: Array(3), year: 64}

在我的reducer中,我有以下代码:

    case "SET_GROUP":
        const { group } = action;

        const showStudent = !checkEmptyArray(action);
        return { ...state, group, showStudent };

但是,group永远不会添加到州:

{year: 64, group: 0, student: 0, showStudent: true}

有什么想法吗?

减速机:

export function setCredentials(state = initialState, action) {
    switch (action.type) {
        case "SET_YEAR":
            return {
                ...state,
                year: action.year,
                group: 0,
                student: 0
            };
        case "SET_STUDENT":
            return { ...state, student: action.student };
        case "SET_GROUP":
            const { group } = action;

            const showStudent = !checkEmptyArray(action);

            return { ...state, group, showStudent };
        case "CLEAR_CREDENTIALS":
            return initialState;

        default:
            return state;
    }
}

的初始化状态:

const initialState = {
    year: 0,
    group: 0,
    student: 0,
    showStudent: false
};

1 个答案:

答案 0 :(得分:0)

如果您没有使用任何保存/加载中间件(可能是原因,以防万一,您可以通过在浏览器的开发人员工具js控制台中执行localStorage.clear()命令来解决它)
/> 就像对代码的测试一样,试试这个:

case "SET_GROUP":
    const showStudent = !checkEmptyArray(action);
    return { 
        ...state, 
        group: action.group, 
        showStudent 
    };

并检查您的"SET_YEAR"案例,其中还会修改groupstudent属性。这种做法,如果它变得更大(因为它实际上是一个"SET_YEAR_RESET_GROUP_RESET_STUDENT"动作),可能会导致你一个凌乱的减速器实现