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

这篇具有很好参考价值的文章主要介绍了react中使用redux-persist做持久化储存。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

某天下午折腾着玩的 – 笔记

安装相关依赖

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

// 配置持久化设置
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 状态

// 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) => {
      // 将传入的值设置为 token 的新值
      state.token = action.payload;
    },
  },
});

export const { setToken } = user.actions;
export default user.reducer;

在组件中使用文章来源地址https://www.toymoban.com/news/detail-625321.html

// App.jsx
import { useSelector, useDispatch } from "react-redux";
import { setToken } from "./redux/reducers/user";

const App = () => {
  const user = useSelector((state) => state.user);
  // 在页面组件中使用 useDispatch 获取 dispatch 函数,用于派发 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中使用redux-persist做持久化储存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【pinia持久化存储】使用pinia和pinia-plugin-persistedstate依赖进行数据的持久化存储

    使用pinia和pinia-plugin-persistedstate依赖进行数据的持久化存储。 存储方式 : localStorage sessionStorage pinia-plugin-persistedstate 中文官网 pinia 中文官网 安装和使用 pinia ,请参考使用pinia文章。 安装 pinia-plugin-persistedstate : 使用前先将 pinia-plugin-persistedstate添加到pinia实例上。 在添加的时

    2023年04月17日
    浏览(34)
  • ActiveMQ使用JDBC持久化消息

    为了避免服务器宕机而导致消息丢失,ActiveMQ提供消息持久化机制。 ActiveMQ提供多种消息持久化的方式,如LevelDB Store、KahaDB 、AMQ、JDBC等,详情可以访问官网。 ActiveMQ默认是使用KahaDB持久化消息。在/conf/activemq.xml如下配置: KahaDB是一个文件型数据库,是以日志形式保存到文件

    2024年02月11日
    浏览(24)
  • Pinia使用方法及持久化存储

    Pinia 是 Vue 的专属状态管理库,它允许你跨组件或页面共享状态。它跟 Vuex 有一定的相似度,但还是有很大的区别。 愿意看这篇博客的人,想必已经看过了官方文档,官方文档很详细,包含各种使用情景和理论,因此本文不说理论,只说具体的使用方法,想深入研究的建议去

    2024年02月08日
    浏览(39)
  • ThingsBoard使用持久化RPC案例场景

    昨天,有个兄弟找到我,他说他遇到问题了,场景如下:他有一个扫描枪A设备,A设备上报数据到ThingsBoard,然后需要将数据发送给B设备,其实这样想实现很简单的就是一个给B设备下发RPC即可,但是啊,这个兄弟说B设备可能会离线,如何保证B设备上线后照样能收到A设备的消

    2024年02月12日
    浏览(82)
  • uniapp中使用vuex并持久化

    目录 文章目录 准备 一、插件实现 1.安装插件  2.index.js配置: 3.获取持久化数据(比如登录页): 4.使用state(比如个人主页): 二、本地存储实现 总结 根目录下创建store文件夹,内部创建index.js 地址:vuex-persistedstate - npm 代码如下(示例): 插件的api说明: key: 存储持久

    2024年02月09日
    浏览(45)
  • Redis的简单使用 (实现Session持久化)

    🎉🎉🎉 点进来你就是我的人了 博主主页: 🙈🙈🙈 戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔 🤺🤺🤺 目录 一、Redis数据类型的使用 1. 字符串(String) 2. 字典类型(哈希 Hashes) 3. 列表(Lists) 4. 集合(Sets) 5. 有序集合(Sorted sets) 二、SpringBoot连接Redis操

    2024年02月11日
    浏览(34)
  • 持久化反弹一个能使用方向键的shell

    服务端 被控端 提升到pty 进一步提升可以使用tab,方向键,ctrl+c SEGINT等 服务端 被控端 参考:https://blog.ropnop.com/upgrading-simple-shells-to-fully-interactive-ttys/

    2024年02月15日
    浏览(35)
  • SpringBoot日志持久化以及使用lombok输出日志

    上一篇文章介绍了日志级别和自定义输出日志 链接 https://blog.csdn.net/qq_45875349/article/details/132510387?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22132510387%22%2C%22source%22%3A%22qq_45875349%22%7D 那么想要将控制台上的日志信息,保存在硬盘上,以便出问题之后追溯

    2024年02月11日
    浏览(35)
  • 【iOS】数据持久化(四)之FMDB基本使用

    正如我们前面所看到的,原生SQLite API在使用时还是比较麻烦的,于是,开源社区就出现了一系列将SQLite API进行封装的库,其中FMDB的被大多数人所使用 FMDB和SQLite相比较,SQLite比较原始,操作比较复杂,使用的是C的函数对数据库进行操作,但是SQLite可控性更强,并且能够 跨平

    2024年01月18日
    浏览(28)
  • Unity学习笔记--数据持久化之PlayerPrefs的使用

    PlayerPrefs是Unity游戏引擎中的一个类,用于在游戏中存储和访问玩家的偏好设置和数据。它可以用来保存玩家的游戏进度、设置选项、最高分数等信息。PlayerPrefs将数据存储在本地文件中,因此可以在游戏重新启动时保持数据的持久性。 PlayerPrefs中存储的数据存储在哪里? PC端

    2024年02月05日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包