最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

react中使用redux-persist做持久化儲存的過程記錄

 更新時間:2024年01月17日 14:59:00   作者:WeirdoPrincess  
這篇文章主要介紹了react中使用redux-persist做持久化儲存的相關(guān)資料,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

react中使用redux-persist做持久化儲存

某天下午折騰著玩的 – 筆記

安裝相關(guān)依賴

npm install @reduxjs/toolkit redux-persist redux react-redux
// store.jsx
import { configureStore, getDefaultMiddleware } from "@reduxjs/toolkit";
import { persistStore, persistReducer } from "redux-persist";
import storage from "redux-persist/lib/storage"; // 選擇持久化存儲引擎,如 localStorage 或 AsyncStorage
import rootReducer from "./reducers/index"; // 導入您的根 reducer
// 配置持久化設(shè)置
const persistConfig = {
  key: "root", // 存儲的鍵名
  storage, // 持久化存儲引擎
  // 可選的配置項,如白名單、黑名單等 選其一就好了
  // blacklist:['test'], // 只有 test 不會被緩存
  // whitelist: ["test"], // 只有 test 會被緩存
};
const persistedReducer = persistReducer(persistConfig, rootReducer);
const store = configureStore({
  reducer: persistedReducer,
  middleware: getDefaultMiddleware({
    serializableCheck: false, // 禁用嚴格模式
  }),
});
const persistor = persistStore(store);
export { store, persistor };

將 store 提供給應用程序:將 Redux store 提供給根組件,以便在整個應用程序中可以訪問到 Redux 狀態(tài)

// main.jsx
import React from "react";
import ReactDOM from "react-dom/client";
import { Provider } from "react-redux";
import { PersistGate } from "redux-persist/integration/react";
import { store, persistor } from "./redux/store";
import App from "./App";
ReactDOM.createRoot(document.getElementById("root")).render(
  <React.StrictMode>
    <Provider store={store}>
      <PersistGate loading={null} persistor={persistor}>
        <App />
      </PersistGate>
    </Provider>
  </React.StrictMode>
);

reducer 示例:

// reducers/index.jsx
import { combineReducers } from "redux";
import userReducer from "./user";
import baseReducer from "./base";
const rootReducer = combineReducers({
  user: userReducer,
  base: baseReducer,
});
export default rootReducer;
// reducers/user.jsx
import { createSlice } from "@reduxjs/toolkit";
const initialState = {
  token: "默認值token",
  isLogin: false,
};
const user = createSlice({
  name: "user",
  initialState,
  reducers: {
    setToken: (state, action) => {
      // 將傳入的值設(shè)置為 token 的新值
      state.token = action.payload;
    },
  },
});
export const { setToken } = user.actions;
export default user.reducer;

在組件中使用

// App.jsx
import { useSelector, useDispatch } from "react-redux";
import { setToken } from "./redux/reducers/user";
const App = () => {
  const user = useSelector((state) => state.user);
  // 在頁面組件中使用 useDispatch 獲取 dispatch 函數(shù),用于派發(fā) action
  const dispatch = useDispatch();
  const setTokenFun = () => {
    dispatch(setToken("一個新的token"));
  };
  return (
    <>
      <p>token=====:{user.token}</p>
      <Button type="primary" onClick={setAddressFun}>
        Set Token
      </Button>
    </>
  );
};
export default App;

補充:React-persist的使用(數(shù)據(jù)持久化)

在React項目中,我們經(jīng)常會通過redux以及react-redux來存儲和管理全局數(shù)據(jù)。但是通過redux存儲全局數(shù)據(jù)時,會有這么一個問題,如果用戶刷新了網(wǎng)頁,那么我們通過redux存儲的全局數(shù)據(jù)就會被全部清空,比如登錄信息等。

這個時候,我們就會有全局數(shù)據(jù)持久化存儲的需求。首先我們想到的就是localStorage,localStorage是沒有時間限制的數(shù)據(jù)存儲,我們可以通過它來實現(xiàn)數(shù)據(jù)的持久化存儲。

但是在我們已經(jīng)使用redux來管理和存儲全局數(shù)據(jù)的基礎(chǔ)上,再去使用localStorage來讀寫數(shù)據(jù),這樣不僅是工作量巨大,還容易出錯。那么有沒有結(jié)合redux來達到持久數(shù)據(jù)存儲功能的框架呢?當然,它就是redux-persist。redux-persist會將redux的store中的數(shù)據(jù)緩存到瀏覽器的localStorage中。

一、安裝

$ npm install redux-persist --save

二、使用

/*
	該文件專門用于暴露一個store對象,整個應用只有一個store對象
*/
//引入createStore,專門用于創(chuàng)建redux中最為核心的store對象
import { createStore, applyMiddleware ,combineReducers} from 'redux'
//引入redux-persist持久化
import { persistStore, persistReducer } from 'redux-persist'
// import localStorage from 'redux-persist/lib/storage'
import storage from 'redux-persist/lib/storage/index'
//引入為Count組件服務的reducer
import incrementReducer from './incrementReducer';
import personReducer from './personReducer';
//引入中間件 可傳入action為函數(shù)
import thunk from 'redux-thunk';
// 引入redux-devtools-extension 第三方可視化redux的工具
import {composeWithDevTools} from 'redux-devtools-extension'
// import {composeWithDevTools} from 'redux-devtools-extension'
//實現(xiàn)persist數(shù)據(jù)持久化
const config = {
  key: 'root',
  storage:storage, //引入的storage是存在local或session
}
//里面保存的是redux完整的key和value 在mapStateToProps調(diào)動key
const allReducer = combineReducers({
  incrementReducer,
  personReducer
})
const store = createStore(persistReducer(config,allReducer),composeWithDevTools(applyMiddleware(thunk)))
persistStore(store)
export default store
//正常版暴露store,thunk是保證action可以接收函數(shù)
// export default createStore(reducer, applyMiddleware(thunk))

對于reducer和action的處理不變,只需修改store的生成代碼

到此這篇關(guān)于react中使用redux-persist做持久化儲存的文章就介紹到這了,更多相關(guān)react redux-persis持久化儲存內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • react中ref獲取dom或者組件的實現(xiàn)方法

    react中ref獲取dom或者組件的實現(xiàn)方法

    這篇文章主要介紹了react中ref獲取dom或者組件的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 淺談React Native 傳參的幾種方式(小結(jié))

    淺談React Native 傳參的幾種方式(小結(jié))

    這篇文章主要介紹了淺談React Native 傳參的幾種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • Vite?+?React從零開始搭建一個開源組件庫

    Vite?+?React從零開始搭建一個開源組件庫

    這篇文章主要介紹了Vite?+?React?如何從0到1搭建一個開源組件庫,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 在?React?中使用?i18next的示例

    在?React?中使用?i18next的示例

    這篇文章主要介紹了在?React?中使用?i18next,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • React實現(xiàn)模糊搜索和關(guān)鍵字高亮的示例代碼

    React實現(xiàn)模糊搜索和關(guān)鍵字高亮的示例代碼

    這篇文章主要為大家詳細介紹了React如何實現(xiàn)模糊搜索和關(guān)鍵字高亮的效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • React?redux?原理及使用詳解

    React?redux?原理及使用詳解

    這篇文章主要為大家介紹了React?redux?原理及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • React使用TailwindCSS的實現(xiàn)示例

    React使用TailwindCSS的實現(xiàn)示例

    TailwindCSS是一個實用優(yōu)先的CSS框架,本文主要介紹了React使用TailwindCSS的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • 使用react-color實現(xiàn)前端取色器的方法

    使用react-color實現(xiàn)前端取色器的方法

    本文通過代碼給大家介紹了使用react-color實現(xiàn)前端取色器的方法,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-11-11
  • React中的State和Props深入理解及關(guān)鍵區(qū)別

    React中的State和Props深入理解及關(guān)鍵區(qū)別

    state和props是React中兩個核心概念,它們共同構(gòu)成了組件的數(shù)據(jù)管理機制,本文將詳細探討 state 和 props 的定義、用途、特點以及它們之間的關(guān)鍵區(qū)別,并提供一些最佳實踐,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • React Hooks常用鉤子及基本原理解讀

    React Hooks常用鉤子及基本原理解讀

    這篇文章主要介紹了React Hooks常用鉤子及基本原理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評論

彭阳县| 白城市| 连平县| 双城市| 重庆市| 高碑店市| 洪湖市| 安岳县| 崇信县| 延川县| 全椒县| 防城港市| 青田县| 石台县| 咸宁市| 保亭| 柞水县| 湾仔区| 乃东县| 卢氏县| 临沭县| 五河县| 北京市| 望城县| 新乐市| 芦山县| 孟津县| 平潭县| 德化县| 昌都县| 扶余县| 正安县| 德惠市| 灌阳县| 连山| 鹤峰县| 临漳县| 织金县| 宁晋县| 中方县| 盘锦市|