首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在redux-persist中同时配置localStorage和sessionStorage?

如何在redux-persist中同时配置localStorage和sessionStorage?
EN

Stack Overflow用户
提问于 2019-12-26 18:38:29
回答 3查看 2.7K关注 0票数 4

我想在sessionStorage中存储与用户相关的属性,在localStorage中存储其他属性。通过下面的配置,我能够使用persist将所有属性存储在localStorage中

代码语言:javascript
复制
import reducers from './reducer';
import { persistStore, persistReducer } from 'redux-persist';
import storage from 'redux-persist/lib/storage';
import autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2';

const persistConfig = {
key: 'root',
storage: storage,
stateReconciler: autoMergeLevel2 // see "Merge Process" section for details.
};

const pReducer = persistReducer(persistConfig, reducers);

有人能告诉我如何在persist中同时配置sessionStorage和localStorage吗?

EN

回答 3

Stack Overflow用户

发布于 2020-02-12 21:49:45

除了Ivan的回答之外,您还可以开箱即用session驱动程序。

代码语言:javascript
复制
import reducers from './reducer';
import { persistStore, persistReducer } from 'redux-persist';
import storage from 'redux-persist/lib/storage';
import sessionStorage from 'redux-persist/lib/storage/session'
import autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2';

const rootPersistConfig = {
  key: 'root',
  storage: storage,
  blacklist: ['auth'],
  stateReconciler: autoMergeLevel2
};

const authPersistConfig = {
  key: 'auth',
  storage: sessionStorage,
}

const rootReducer = combineReducers({
  auth: persistReducer(authPersistConfig, authReducer),
  other: otherReducer,
})

export default persistReducer(rootPersistConfig, rootReducer)
票数 4
EN

Stack Overflow用户

发布于 2020-01-31 15:50:37

来自官方redux-persist repo的示例:

代码语言:javascript
复制
import { combineReducers } from 'redux'
import { persistReducer } from 'redux-persist'
import storage from 'redux-persist/lib/storage'

import { authReducer, otherReducer } from './reducers'

const rootPersistConfig = {
  key: 'root',
  storage: storage,
  blacklist: ['auth']
}

const authPersistConfig = {
  key: 'auth',
  storage: storage,
  blacklist: ['somethingTemporary']
}

const rootReducer = combineReducers({
  auth: persistReducer(authPersistConfig, authReducer),
  other: otherReducer,
})

export default persistReducer(rootPersistConfig, rootReducer)

https://github.com/rt2zz/redux-persist#nested-persists

也许这不是你想要的,因为这个解决方案是基于嵌套缩减程序的,但这对我很有效。

票数 1
EN

Stack Overflow用户

发布于 2019-12-26 20:14:36

有时,您希望仅在当前浏览器会话中缓存/持久化数据。关闭浏览器时,您希望缓存再次变为空;但当您刷新浏览器选项卡时,您希望保持缓存不变。例如,在用户登录到应用程序之后处理用户会话时,此行为可能很有用。可以保存用户会话,直到浏览器关闭。这就是您可以使用原生sessionStorage而不是localStorage的地方。会话存储的使用方式与本地存储相同。

代码语言:javascript
复制
// Save data to sessionStorage
sessionStorage.setItem('key', 'value');

// Get saved data from sessionStorage
let data = sessionStorage.getItem('key');

// Remove saved data from sessionStorage
sessionStorage.removeItem('key');

// Remove all saved data from sessionStorage
sessionStorage.clear();

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59487193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档