我得到下面的错误Next.js是最新的
未处理的运行时错误:store.getState不是函数
"use client";
import { configureStore } from "@reduxjs/toolkit";
import productSlice from "./features/productSlice";
const persistedStateJson = localStorage.getItem("myState");
let persistedState = {};
if (persistedStateJson) {
persistedState = JSON.parse(persistedStateJson);
}
const store = configureStore({
reducer: {
productSlice
},
preloadedState: persistedState,
});
//set local storage on store change
store.subscribe(() => {
localStorage.setItem("myState", JSON.stringify(store));
});
export default store;
字符串
配置了redux存储
1条答案
按热度按时间ewm0tg9j1#
不幸的是,你忽略了堆栈跟踪,所以现在还不知道它是从哪里来的,但是这里我想指出两个一般性的问题,两者都源于相同的细微差别:
此组件是一个客户端组件,但它仍然会SSR,因为这就是Next.js对App Router所做的!
store
常量将在所有用户和所有SSRed页面之间共享。您需要在组件内部创建这个store
示例,并将其作为ref
或本地组件状态保存,然后将其传递到Provider
。不能将其作为模块级常量。localStorage
。您需要将此代码 Package 到typeof window !== "undefined"
检查中。字符串
这也意味着这里的SSRed部分将始终以空存储开始(因为服务器无法访问用户浏览器的localStorage)。这可能会导致很多问题,因为服务器将呈现与客户端完全不同的标记。