gpt4 book ai didi

reactjs - 使用多个 redux 为每个应用程序用户存储一个

转载 作者:行者123 更新时间:2023-12-03 14:14:37 25 4
gpt4 key购买 nike

在 React Native 应用程序中,我正在使用 redux。目前整个应用程序只有一个存储,我使用 redux-persist 将存储缓存到本地存储。

我的应用程序受用户名和密码保护,您必须创建帐户才能使用它。

现在我想提供一种功能,以便我的用户可以在他的帐户之间切换 - 如果他有多个帐户 - 。这会造成很多麻烦,因为现在每次用户在帐户之间切换时我都必须清除存储并重置状态。

所以我在考虑是否可以使用多个商店,每个用户一个?

例如我的应用程序状态看起来像

{
chat:{},
highscores:{},
gameHistory:{},
}

现在,如果用户拥有帐户,例如User1@gmail.com,则状态将填充他的数据。他的状态将被保存到LocalStorage,

一旦他将帐户切换到User2@gmail.com,现在我必须将应用程序重置为其初始状态,然后以某种方式从 localStorage 加载 User2 状态

我不希望每次用户在帐户之间切换时应用程序的状态都会丢失。

所以我正在考虑在这种情况下,使用多个 Redux 存储是一个不错的选择,每个用户一个。

以前有人有过设计供多个用户使用的应用程序吗?我们如何在 redux 中做到这一点?

最佳答案

上面的答案工作得很好,但由于我使用的是 ImmutableJs,拥有深度嵌套的对象确实很难处理。

所以我最终用 user_id 命名存储 key 。

所以现在当我切换用户时,我只需使用来自 localStorage 或 AsyncStorage 的特定用户数据刷新整个存储。

我将 rootReducer 包装在一个简单的 reducer 中来处理这个问题。

function makeRootReducer(rootReducer){
return function reducer(state, action){
if(action.type==='SWITCH_USER'){
//LOAD USER DATA..
const data = JSON.parse(localStorage.getItem("store.user."+action.id)||"{}");
return makeInitialData(data); //this just return initialData.
}
let newState = rootReducer(state, action);
//simple save state to localStorage if state changed
if(state !== newState)localStorage.setItem('store.user.'+state.user_id',JSON.stringify(newState);
return newState;
}

}

关于reactjs - 使用多个 redux 为每个应用程序用户存储一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40061170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com