首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用redux-toolkit时出现reducer函数错误

使用redux-toolkit时出现reducer函数错误
EN

Stack Overflow用户
提问于 2021-09-12 05:18:03
回答 1查看 231关注 0票数 1

当我使用redux时,我得到了以下错误:

代码语言:javascript
复制
TypeError: react__WEBPACK_IMPORTED_MODULE_2___default(...) is not a function

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

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

代码语言:javascript
复制
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组件:

代码语言:javascript
复制
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组件:

代码语言:javascript
复制
import { configureStore } from "@reduxjs/toolkit";
import auth from "./Auth";

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

export default store;

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-12 05:25:35

问题

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

代码语言:javascript
复制
export const authActions = authSlice.actions;

export default authSlice.reducer;

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

代码语言:javascript
复制
import authAction from "../store/Auth";

解决方案

正确导入命名authActions导出:

代码语言:javascript
复制
import { authActions } from "../store/Auth";

并派发正确的操作创建者:

代码语言:javascript
复制
<Button
  color="inherit"
  onClick={() => {
    dispatch(authActions.login());
  }}
>
  Login
</Button>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69148664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档