【问题标题】:Redux-Toolkit Store does not have a valid reducerRedux-Toolkit Store 没有有效的 reducer
【发布时间】:2021-09-01 07:40:47
【问题描述】:

我第一次使用 Redux-Toolkit,按照他们文档中的快速入门,遇到了这个错误

Store 没有有效的 reducer。确保传递给 combineReducers 的参数是一个其值为 reducers 的对象。

我将 reducer 和 store 对象记录到控制台,发现 configure store 中的 store 对象根本没有 reducer 属性。

如果有人能提供帮助,我将不胜感激。

P.S:我已经查看了有关此问题的所有其他 stackoverflow 问题。没有什么是相关的。

这是我的代码

  • store.js
import { configureStore } from "@reduxjs/toolkit";

// Redux Reducers
import { authSlice } from "./slices/authSlice";
import { projectSlice } from "./slices/projectSlice";

export const store = configureStore({
    reducer: {
        auth: authSlice.reducer,
        project: projectSlice.reducer,
    },
});

  • authSlice.js
import { createSlice } from "@reduxjs/toolkit";

export const authSlice = createSlice({
    name: "auth",
    initialState: {
        isUserLoggedIn: false,
        userDetails: {},
    },
    reducers: {
        login: (state) => {
            state.auth.isUserLoggedIn = true;
        },
        logout: (state) => {
            state.auth.isUserLoggedIn = false;
        },
        register: (state) => {
            state.auth.isUserLoggedIn = true;
        },
    },
});

export const { login, logout, register } = authSlice.actions;

【问题讨论】:

  • 我看到一切正常。导入时检查projectSlice和文件路径

标签: javascript reactjs redux react-redux redux-toolkit


【解决方案1】:

auth 不是state 的属性:

import { createSlice } from "@reduxjs/toolkit";

export const authSlice = createSlice({
    name: "auth",
    initialState: {
        isUserLoggedIn: false,
        userDetails: {},
    },
    reducers: {
        login: (state) => {
            // state.auth.isUserLoggedIn = true;
            state.isUserLoggedIn = true;
        },
        logout: (state) => {
            // state.auth.isUserLoggedIn = false;
            state.isUserLoggedIn = false;
        },
        register: (state) => {
            // state.auth.isUserLoggedIn = true;
            state.isUserLoggedIn = true;
        },
    },
});

export const { login, logout, register } = authSlice.actions;

export default authSlice.reducer; // did you forget to export this?

// store.js
import authReducer from "./slices/authSlice";

export const store = configureStore({
    reducer: {
        auth: authReducer,
    },
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 1970-01-01
    • 2016-07-24
    • 2018-04-27
    • 2020-05-23
    • 2019-09-05
    相关资源
    最近更新 更多