简体   繁体   English

Redux Reducer错误-分配必须为对象

[英]Redux reducer error - assign MUST be an object

I get the following error in my reducer return statement. 我的减速机return语句中出现以下错误。

In this environment the sources for assign MUST be an object. 在这种环境下,分配源必须是一个对象。 This error is a performance optimization and not spec compliant. 此错误是性能优化,不符合规范。

export function setCredentials(state = {}, action) {
    switch (action.type) {
        case "SET_YEAR":
            return { ...state, ...action.setYear };
        case "SET_STUDENT":
            return { ...state, ...action.setStudent };
        case "SET_GROUP":
            return { ...state, ...action.setGroup };
        default:
            return state;
    }
}

Action creators: 动作创作者:

export const setYear = int => ({
    type: "SET_YEAR",
    setYear: int
});

export const setGroup = int => ({
    type: "SET_GROUP",
    setGroup: int
});

export const setStudent = int => ({
    type: "SET_STUDENT",
    setStudent: int
});

I am trying to create the following state: 我正在尝试创建以下状态:

{
      setCredentials: {
                 setYear: 20,
                 setStudent:10,
                 setGroup: 10
      }
}

Any ideas? 有任何想法吗?

Reducer/index.js 减速/ index.js

import { combineReducers } from "redux";
import {
    setCredentials,
    fetchCategories,
    eventsForMonth,
    fetchEvents
} from "./events";

import { hasErrored, isLoading } from "./loader";

import navigationReducer from "./navigationReducer";
const rootReducer = combineReducers({
    fetchEvents,
    navigationReducer,
    hasErrored,
    eventsForMonth,
    isLoading,
    fetchCategories,
    setCredentials
});

export default rootReducer;

Store: 商店:

import rootReducer from "../reducers";

const initialState = {
    hasErrored: false,
    isLoading: true,
    fetchEvents: {},
    fetchCategories: [],
    setCredentials: {}
};

const reduxLogger = createLogger();

const store = createStore(
    rootReducer,
    initialState,
    applyMiddleware(thunk, reduxLogger)
);

export default store;

In your reducers you're trying to destructure values, not objects. 在化简器中,您尝试破坏值,而不是对象。 You'll understand it on seeing this proposed change: 看到此建议的更改,您将理解它:

export function setCredentials(state = {}, action) {
    switch (action.type) {
        case "SET_YEAR":
            return { ...state, setYear: action.setYear };
        case "SET_STUDENT":
            return { ...state, setStudent: action.setStudent };
        case "SET_GROUP":
            return { ...state, setGroup: action.setGroup };
        default:
            return state;
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM