【问题标题】:reducer function error when using redux-toolkit使用redux-toolkit时reducer函数错误
【发布时间】:2021-09-12 05:18:02
【问题描述】:

我在使用 redux 时遇到以下错误:

TypeError: react__WEBPACK_IMPORTED_MODULE_2___default(...) is not a function

我该如何解决这个问题?我已经添加了下面的代码。

dispatch() 在下面的组件中被调用

import authAction from "../store/Auth";
import { useDispatch } from "react-redux";
const useStyles = makeStyles((theme) => ({
  root: {
    flexGrow: 1,
  },
  menuButton: {
    marginRight: theme.spacing(2),
  },
  title: {
    flexGrow: 1,
  },
}));

export default function Header() {
  const classes = useStyles();
  const dispatch = useDispatch();
  console.log("Auth:", authAction);

  return (
    <div className={classes.root}>
      <AppBar position="static">
        <Toolbar>
          <Typography variant="h6" className={classes.title}>
            Counter
          </Typography>
          <Button
            color="inherit"
            onClick={() => {
              dispatch(authAction.login());
            }}
          >
            Login
          </Button>
        </Toolbar>
      </AppBar>
    </div>
  );
}

creatSlice组件:

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

const authSlice = createSlice({
  name: "Auth",
  initialState: { loggedIn: false },
  reducers: {
    login(state) {
      state.loggedIn = true;
    },
  },
});

export const authActions = authSlice.actions;

export default authSlice.reducer;

configureStore组件:

import { configureStore } from "@reduxjs/toolkit";
import auth from "./Auth";

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

export default store;

谢谢。

【问题讨论】:

    标签: reactjs redux redux-toolkit


    【解决方案1】:

    问题

    您的身份验证操作不是切片的默认导出:

    export const authActions = authSlice.actions;
    
    export default authSlice.reducer;
    

    但您正在导入它们,就好像它们是:

    import authAction from "../store/Auth";
    

    解决方案

    正确导入命名authActions导出:

    import { authActions } from "../store/Auth";
    

    并派遣正确的动作创建者:

    <Button
      color="inherit"
      onClick={() => {
        dispatch(authActions.login());
      }}
    >
      Login
    </Button>
    

    【讨论】:

      猜你喜欢
      • 2020-04-24
      • 2020-11-08
      • 1970-01-01
      • 2021-03-03
      • 1970-01-01
      • 2020-09-13
      • 2020-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多