在初始化期间未定义的Reducer“语言”返回-CombineReducers错误

时间:2020-07-16 21:00:49

标签: reactjs react-redux react-state

我对redux的配置有问题,我是React和Redux的新手,而且redux与vuex不相似,所以我还不知道如何解决这个问题。 那我们来看一下代码。

小笔记:我确定我已经有了所需的每个导入,所以让我只显示清晰视图的代码。

index.jsx

let store = createStore(reducers);
store.subscribe(() => console.log(store.getState()));
render(
    <Provider store={store}>
        <App />
    </Provider>
, window.document.querySelector('#app-container'));

... / store / reducer / index.js

const reducers = combineReducers({
    language
});

export default reducers;

... / store / reducer / language / languageFrom.js

const languageFromReducer = (state = "", action) => {
    switch(action.type) {
        case "SET_LANGUAGE":
            return state = action.payload; //I'm almost sure that this one is wrong O.o
    }
}

export default languageFromReducer;

... / store / action / languageFrom.js

export const setLanguage = (language) => {
    return {
        type: "SET_LANGUAGE",
        payload: language
    };
};

这是我为redux配置的内容,并且我仅获得有关未定义初始状态的信息。我一直在寻找有关此问题的讨论,但没有找到可以清楚地解决我的问题的地方。

整个错误日志:

Uncaught Error: Reducer "language" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.

1 个答案:

答案 0 :(得分:0)

您的减速机缺少默认开关盒。至于返回语法,您可以直接返回action.payload。下次运行时,返回的值将以state的形式传递给reducer。

const languageFromReducer = (state = "", action) => {
    switch(action.type) {
        case "SET_LANGUAGE":
            return action.payload; //I'm almost sure that this one is wrong O.o
        default:
            return state
    }
}
相关问题