TypeError:(0,_react.createContext)不是使用Redux的Nextjs上的函数

ccgok5k5  于 2023-05-06  发布在  React
关注(0)|答案(1)|浏览(161)

我是使用redux的新手,并试图在在线教程的帮助下使用它。nut im看到此错误:
服务器错误类型:(0,_react.createContext)不是函数
生成页面时发生此错误。所有控制台日志都将显示在终端窗口中。
我提供我的代码below:authSlice.js文件:

import { createSlice } from "@reduxjs/toolkit";
import { HYDRATE } from "next-redux-wrapper";

const initialState = {
    authState: false,
    userInfo: {},
    authToken: ""
}

export const authSlice = createSlice({
    name: "auth",
    initialState,
    reducers: {

        setAuthState(state, action) {
            state.authState = action.payload
        }
        , setUserInfo(state, action) {
            state.userInfo = action.payload
        },
        setToken(state, action) {
            state.authToken = action.payload
        },
        setAuth(state, action) {
            state.authState = action.payload.authState;
            state.userInfo = action.payload.userInfo;
            state.authToken = action.payload.authToken;
        }
    },
    extraReducers: {
        [HYDRATE]: (state, action) => {
            return {
                ...state,
                ...action.payload.auth
            }
        }
    }
})

export const { setAuthState, setUserInfo, setToken, setAuth } = authSlice.actions
export const selectAuthState = (state) => state.auth.authState;
export const selectAuthToken = (state) => state.auth.authToken;
export const selectUserInfo = (state) => state.auth.userInfo;

export default authSlice.reducer

store.js代码:

import { configureStore, ThunkAction, Action } from "@reduxjs/toolkit";
import { authSlice } from "./authSlice";
import { createWrapper } from "next-redux-wrapper";

const makeStore = () =>
    configureStore({
        reducer: {
            [authSlice.name]: authSlice.reducer,
        },
        devTools: true,
    });


const store = makeStore()
export default store

我尝试使用redux的组件:

import { useRouter } from "next/navigation";
    import { useDispatch, useSelector } from "react-redux";
    import {
    selectAuthState,
    selectAuthToken,
    selectUserInfo,
    setAuthState,
    setUserInfo,
} from "@/data/authSlice";


function Sidebar() {
    const router = useRouter();
    const dispatch = useDispatch();
    const authState = useSelector(selectAuthState);
    const authToken = useSelector(selectAuthToken)
    const userInfo = useState(selectUserInfo)

    useEffect(() => {
        if (!authState) {
            router.push("/")
        }
    }, [router.asPath]);
// rest of the codes
import axios from "axiosConfig";
import { useDispatch, useSelector } from "react-redux";
import {
  selectAuthState,
  selectAuthToken,
  setAuthState,
  setUserInfo,
} from "@/data/authSlice";

// toastify
// import { toast } from 'react-toastify';
// import 'react-toastify/dist/ReactToastify.css';
// const notify = (text) => {
//     toast.success(text , {position: toast.POSITION.BOTTOM_RIGHT})
// }

const LoginPage = () => {
  const router = useRouter();
  const dispatch = useDispatch();
  const authState = useSelector(selectAuthState);

  useEffect(() => {
    const token = authState;
    if (token) {
      router.push("/Dashboard");
    } else {
    }
  }, [router.asPath]);
// rest of the codes

我尝试重新安装redux和react-redux,但没有帮助。

  • 我还尝试删除node_modules
  • 删除package-lock.json
  • npm install再次。但什么也没发生
ykejflvf

ykejflvf1#

您必须在每个文件的顶部使用"use client"

相关问题