react redux toolkit- action in dispatch returns err: Object(...) 不是 onClick 的函数

react redux toolkit- action in dispatch returns err: Object(...) is not a function at onClick

我正在学习用于 reactjs 的 redux 工具包。我在 youtube 上观看了一个 toturial,并逐步完成了所有内容。我写了一个应用程序 有 2 个组件:配置文件和登录!当您单击登录组件的按钮时,配置文件信息应该会更改。但是现在,当我按下那个按钮时,我得到了这个错误:

Login.js:12 未捕获类型错误:对象 (...) 不是函数 在点击 (Login.js:12) 我想知道我的错误是什么?!

index.js:

import App from "./App";
import { Provider } from "react-redux";
import { configureStore } from "@reduxjs/toolkit";
import userReducer from './futures/users'

const store = configureStore({
  reducer: {
    user : userReducer
  },
});

ReactDOM.render(
  <React.StrictMode>
    <Provider store={store}>
      <App />
    </Provider>
  </React.StrictMode>,
  document.getElementById("root")
);

src > futures > users.js:

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

const userSlice = createSlice({
  name: "user",
  initialState: { value: { name: "", age: 0, gender: "" } },
  reducer: {
    login: (state, action) => {
      state.value = action.payload;
    },
  },
});

export const { login } = userSlice.actions;
console.log(login); //it returned undefined

export default userSlice.reducer;

Profile.js: (It works well)

import React from "react";
import { useSelector } from "react-redux";

const Profile = () => {
    const user = useSelector((state)=> state.user.value);
  return (
    <div>
      <h1>Profile</h1>
      <p>Name: {user.name}</p>
      <p>Age: {user.age}</p>
      <p>Gender: {user.gender}</p>
    </div>
  );
};

export default Profile;

Login.js:

import React from "react";
import { useDispatch } from "react-redux";
import { login } from "../futures/users";

const Login = () => {
  const dispatch = useDispatch();

  return (
    <div>
      <button
        onClick={() =>{
            dispatch(login({ name: "Paria", age: 21, gender: "demigirl" }));
        }}
      >
        Login
      </button>
    </div>
  );
};

export default Login;

并且我在 App.js 的 return 功能中添加了这些组件(登录和配置文件)。

It 应该是 reducers(带有 s)而不是 reducer

const userSlice = createSlice({
  name: "user",
  initialState: { value: { name: "", age: 0, gender: "" } },
  reducers: {  // <-- Change to `reducers` here, mate
    login: (state, action) => {
      state.value = action.payload;
    },
  },
});