redux - 我已经在 next js 中使用 next-redux-wrapper 成功实现了 redux-persist

标签 redux next.js redux-persist next-redux-wrapper

我从外部 api 获取数据并将其存储在 reducer 中。我使用 redux-persist 在从一个页面导航到另一个页面时保持状态。但是我已经将 whiteList 作为一个空数组,但是所有状态正在坚持吗?需要帮助

import "../assets/css/style.scss";
import "owl.carousel/dist/assets/owl.carousel.css";  
import "owl.carousel/dist/assets/owl.theme.default.css";
import Layout from "../component/Layout/Layout";
import { wrapper } from "../redux/store";
import { useEffect } from "react";
import { useStore } from "react-redux";
function MyApp({ Component, pageProps }) {
const store = useStore((store) => store);
useEffect(() => {
{
  typeof document !== undefined
    ? require("bootstrap/dist/js/bootstrap.bundle")
    : null;
}
}, []);
return (
<Layout>
  <Component {...pageProps} />;
</Layout>
);
}

export default wrapper.withRedux(MyApp);

import { createStore, applyMiddleware } from "redux";
import thunk from "redux-thunk";
import { composeWithDevTools } from "redux-devtools-extension";
import { persistStore, persistReducer } from "redux-persist";
import storage from "redux-persist/lib/storage";
import rootReducer from "./index";
import { createWrapper, HYDRATE } from "next-redux-wrapper";
const middleware = [thunk];
let initialState={}

// BINDING MIDDLEWARE
const bindMiddleware = (middleware) => {
if (process.env.NODE_ENV !== "production") {
return composeWithDevTools(applyMiddleware(...middleware));
}
 return applyMiddleware(...middleware);
};


const makeStore = ({ isServer }) => {
if (isServer) {
//If it's on server side, create a store
return createStore(rootReducer,initialState, bindMiddleware(middleware));
} else {
//If it's on client side, create a store which will persis
const persistConfig = {
  key: "root",
  storage: storage,
  whiteList: [],
};
const persistedReducer = persistReducer(persistConfig, rootReducer);
const store = createStore(persistedReducer,initialState, bindMiddleware(middleware));
store.__persisitor = persistStore(store); // This creates a persistor object & push that 
persisted object to .__persistor, so that we can avail the persistability feature
return store;
}
};
// export an assembled wrapper
export const wrapper = createWrapper(makeStore);

最佳答案

如果您将 whitelist 保留为空数组,则不会保留任何内容。

您必须将要保留的 redux reducers 值放入该字符串数组中。

例子:

const persistConfig = {
  key: 'root',
  storage: storage,
  whiteList: ['cart', 'form', 'user'],
};

关于redux - 我已经在 next js 中使用 next-redux-wrapper 成功实现了 redux-persist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68576210/

相关文章:

javascript - 如何以最简单的方式持久化 redux 状态?

reactjs - 在应用程序初始化时从持久存储中检索 token React Native、Redux-Persist

redux - 使用 react 注入(inject)器时在注销时重置 redux 存储

reactjs - 用于中等规模项目的 React Context API 与 Redux

javascript - 将 Firebase 与 Redux 绑定(bind)

html - 如何在 NextJs 文档上动态设置 HTML lang 属性?

javascript - 使用react、redux和react-router-redux路由到另一个页面之前的动画

node.js - 如何在 Next.js 中获取 API 路由中的 URL 查询字符串?

reactjs - NextJs : The Serverless Function exceeds the maximum size limit of 50mb

react-native - Redux-持久安全加密