js和@reduxjs/toolkit在我的项目中。当我尝试使用useReader方法从store中获取数据时,未定义的值返回。
这里是我的reducer文件:
import { createSlice } from "@reduxjs/toolkit";
export const deviceSlice = createSlice({
name: "isMobile",
initialState: {
value: false,
},
reducers: {
detectDevice: (state) => {
state.value = !state.value;
},
},
});
export const { detectDevice } = deviceSlice.actions;
export default deviceSlice.reducer;
字符串
这里是我的store.js文件:
import { configureStore } from "@reduxjs/toolkit";
import { detectDevice } from "./device";
export default configureStore({
reducer: {
isMobile: detectDevice,
},
});
型
我的index.js文件:
import Head from "next/head";
import Nav from "../components/nav/Nav";
import { useEffect } from "react";
import { useSelector, useDispatch } from "react-redux";
import { detectDevice } from "../redux/device";
export default function Home() {
const dispatchDetectDevice = useDispatch();
let size = useSelector((state) => state.isMobile.value);
useEffect(() => {
if (window.innerWidth < 576) dispatchDetectDevice(detectDevice(true));
else {
dispatchDetectDevice(detectDevice(false));
}
console.log(size);
});
return (
<div>
<Head>
<title>Create Next App</title>
<meta name="description" content="Generated by create next app" />
<link rel="icon" href="/favicon.ico" />
</Head>
<Nav />
</div>
);
}
型
第15行的console.log()方法返回undefined值。
你认为这是什么原因?
2条答案
按热度按时间dxpyg8gm1#
除非你的应用程序已经用
Redux store
的provider
Package ,否则你的全局状态是无法访问的。这可以解释为什么你的size
是undefined
。我没有看到你的
store.js
或device.js
文件有任何问题。请附上你的
_app.js
文件好吗?这应该在里面:
字符串
emeijp432#
尝试在
useSelector
函数中使用return
语句,如:字符串
并检查你是否正确地为整个应用程序提供了store。希望这将修复你的错误,如果你需要任何帮助,请花时间阅读关于Nextjs的redux工具包使用的官方指南。