注:redux-toolkit 我之前的文章:文章链接
使用 redux-persist 之前的代码
src/redux/index.tsx
import { configureStore } from "@reduxjs/toolkit";
import menuReducer from "./modules/menu/menu";
import globalReducer from "./modules/global";
export const store = configureStore({
reducer: {
menu: menuReducer,
global: globalReducer,
},
});
使用 redux-persist
安装:
npm i redux-persist
1. 使用 persistStore 和 persistReducer
修改 src/redux/index.tsx
import { configureStore, combineReducers } from "@reduxjs/toolkit";
import { persistStore, persistReducer } from "redux-persist";
import storage from "redux-persist/lib/storage";
import menuReducer from "./modules/menu/menu";
import globalReducer from "./modules/global";
const rootReducer = combineReducers({
menu: menuReducer,
global: globalReducer,
});
// 持久化配置
const persistConfig = {
key: "root",
storage,
};
const persistedReducer = persistReducer(persistConfig, rootReducer);
export const store = configureStore({
reducer: persistedReducer,
middleware: (getDefaultMiddleware) =>
getDefaultMiddleware({
serializableCheck: false,
}),
});
export const persistor = persistStore(store);
2. 使用 PersistGate 包装根组件
src/index.tsx
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App";
import { Provider } from "react-redux";
import { PersistGate } from "redux-persist/integration/react";
import { persistor, store } from "./redux";
import "@/styles/reset.scss";
const root = ReactDOM.createRoot(
document.getElementById("root") as HTMLElement
);
root.render(
// <React.StrictMode>
<Provider store={store}>
<PersistGate loading={null} persistor={persistor}>
<App />
</PersistGate>
</Provider>
// </React.StrictMode>
);