当前位置: 首页 > 知识库问答 >
问题:

javascript - reduxjs/toolkit 刷新页面后如不丢失 store 中的数据?

锺离鸿
2024-01-23

reduxjs/toolkit刷新页面后,store 中的数据丢失怎么办?
我想放到 localstorage 中,获取的时候,判断对象是否存在,不存在就把值给 state,结果 state 不让复制,但是直接返回缓存,就失去了响应式,这该咋解决?
网上有说 redux-persist,但是这个比较老,都是 redux 的例子,大家都是怎么解决的?

共有2个答案

邵逸明
2024-01-23

redux-persist

吴俊风
2024-01-23

当使用 Redux Toolkit 创建 Redux store 时,如果你想在刷新页面后保留 store 中的数据,你可以考虑使用持久化存储库,例如 redux-persistredux-persist 是一个流行的 Redux 持久化库,它可以帮助你轻松地将 Redux store 中的数据保存到浏览器的 localStorage 或 sessionStorage 中,并在页面刷新或重新加载时恢复数据。

下面是一个使用 redux-persist 实现 Redux store 数据持久化的基本示例:

  1. 首先,安装 redux-persist
npm install redux-persist
  1. 在 Redux store 的创建中集成 redux-persist
// reducers.jsimport { createSlice } from '@reduxjs/toolkit';import { persistReducer } from 'redux-persist';import storage from 'redux-persist/lib/storage'; // localStorage 默认存储引擎const initialState = {  // 初始状态};const mySlice = createSlice({  name: 'mySlice',  initialState,  reducers: {    // 定义你的 reducer 逻辑  },});export const { ...actions } = mySlice.actions;// 持久化配置,保存到 localStorage 中,并使用默认过滤器保留需要的状态部分export default persistReducer({  key: 'myRoot', // 用于恢复的 key  storage,  whitelist: ['mySlice'], // 需要持久化的 reducer 名称或状态路径列表})(mySlice.reducer);
  1. 在应用中使用持久化的 Redux store:
// index.js 或 App.js(应用入口文件)import React from 'react';import { render } from 'react-dom';import { Provider } from 'react-redux';import { createStore } from '@reduxjs/toolkit';import { persistStore, persistReducer } from 'redux-persist';import storage from 'redux-persist/lib/storage'; // localStorage 默认存储引擎import rootReducer from './reducers'; // 根 reducer,通常是一个 combineReducers 的结果import App from './App'; // 你的应用组件const persistedReducer = persistReducer({ key: 'myRoot', storage });const store = createStore(persistedReducer, rootReducer); // 创建持久化的 Redux storeconst persistor = persistStore(store); // 创建持久化实例,用于存储和恢复数据render(  <Provider store={store}>    <App /> // 将 store 传递给应用组件  </Provider>,  document.getElementById('root') // 将根元素 ID 作为参数传递给 render 方法,以便在页面上渲染组件。你可以根据实际情况修改根元素的 ID。);

通过上述配置,当页面刷新时,redux-persist 会从 localStorage 中恢复持久化的 Redux store 数据,并自动将其合并到新的 store 中。这样就可以在刷新页面后保留 store 中的数据了。请注意,redux-persist 的使用可能需要根据你的具体需求进行一些配置和调整。

 类似资料:
  • 本文向大家介绍vuex页面刷新后数据丢失的方法,包括了vuex页面刷新后数据丢失的方法的使用技巧和注意事项,需要的朋友参考一下 1. 原因 (1)js代码是运行在内存中的,代码运行时的所有变量、函数都是保存在内存中。 (2)刷新页面,以前申请的内存被释放,重新加载脚本代码,变量要重新赋值。 (3)要想刷新后数据不丢失就必须把数据存储在外部,例如:Local Storage、Session Stor

  • 本文向大家介绍页面刷新后vuex的state数据丢失怎么解决?相关面试题,主要包含被问及页面刷新后vuex的state数据丢失怎么解决?时的应答技巧和注意事项,需要的朋友参考一下 监听浏览器刷新前的事件,在浏览器刷新之前就把vuex里的数据保存至sessionStorage中,刷新成功后如果异步请求的数据还没返回则直接获取sessionStorage里的数据,否则获取vuex里的数据。

  • 当用户成功登录时,它将身份验证状态从null变为true,并且在登陆主页后,当我刷新页面时,它将初始化状态(authstate.js)设置为默认状态值,我希望即使在用户刷新页面后也能保持该状态。我使用的是hooks reducer login.js authstate.js 这是initialstate代码 导出默认的AuthState; authreducer.js这是reducer钩子代码导入

  • 本文向大家介绍vuex页面刷新导致数据丢失的解决方案,包括了vuex页面刷新导致数据丢失的解决方案的使用技巧和注意事项,需要的朋友参考一下 解决vuex页面刷新导致数据丢失问题 vuex数据是存在内存当中,当页面刷新之后vuex数据自然会丢失。我们有两种方法解决该问题: 1.使用vuex-along 2.使用localStorage或者sessionStroage 1.使用vuex-along v

  • 本文向大家介绍JS中利用localStorage防止页面动态添加数据刷新后数据丢失,包括了JS中利用localStorage防止页面动态添加数据刷新后数据丢失的使用技巧和注意事项,需要的朋友参考一下 非常不多说了,直接给大家贴代码了,具体代码如下所示: 以上所述是小编给大家介绍的JS中利用localStorage防止页面动态添加数据刷新后数据丢失,希望对大家有所帮助,如果大家有任何疑问请给我留言,

  • 问题内容: 发生更改时,如何检测对数据库的最新更新并以静默方式刷新页面? 假设数据库访问如下所示: 任何想法和样品将不胜感激。谢谢。 问题答案: 这就是我最近使用jQuery实现解决方案的方式。 每当发生 重大 更新时,PHP都会在数据库中增加一个字段。 最初加载页面时,使用数据库中的数字填充JavaScript变量: