问题标签 [redux-persist]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
980 浏览

reactjs - 存储数据时出错,{}- Redux Persist

所以我能够成功地将我的商店链接到我的主 App.js,但现在我收到了关于存储数据的错误。我试图清除以查看它是否会做任何事情,并且我收到了类似的错误,它说它无法清除存储的数据存储 {}。

更新:问题与const storageredux-persist-sensitive-storage 库有关。不过,不知道如何用这个库保存数据。

商店.js:

index.js- 减速器

我的一个减速器的例子:

0 投票
2 回答
3706 浏览

reactjs - 在应用程序初始化 React Native、Redux-Persist 时从持久存储中检索令牌

我已经在我的应用程序中插入了 redux-persist。当应用程序被杀死后重新启动时,我想做的第一个想法是在重新水化的商店中获取我的身份验证令牌并检查令牌是否仍然有效。

我正在努力寻找做到这一点的好策略。作为第一个直觉,我会尝试在 componentDidMount 方法的根 App 组件中执行此操作。这是我的组件:

但是store.getState()给了我非再水合状态并persistor.getState()给了我一个不可用的对象:

这也是我的store.js文件:

我怎样才能做到这一点?

0 投票
0 回答
310 浏览

reactjs - 使用 Redux Persist 或 Async Storage 检索数据

我目前在 Redux-Persist 中使用异步存储。现在我也一直在我的 action.js 中使用异步存储,但这让我想知道......我需要这样做吗?如果 Redux Persist 已经使用了异步存储,我还需要使用它吗?为了检索我的令牌,我应该只使用我的 redux 状态吗?

0 投票
1 回答
1341 浏览

reactjs - 无法在 App.js 中访问 Redux 状态

我需要访问 App.js 中的 redux 状态。

我目前正在使用导航组件“开关”来处理我的应用程序路由,并且我正在使用connectand mapStateToProps,它允许我在mapStateToProps函数中查看我的应用程序状态。这个问题是 App.js 中的 this.props 不会返回任何状态。

我正在尝试通过我的 redux 状态将 isAuthenticated 传递给 Switch。

应用程序.js:

0 投票
1 回答
1176 浏览

reactjs - 从 redux-persist-transform-encrypt 隐藏 webpack bundle.js 中的密钥

我将 redux-persist 与 redux-persist-transform-encrypt 结合使用来加密我在 localstorage 中的 redux 存储。所以我像这样实现了加密:

一切正常,redux 存储在本地存储中加密。我注意到的问题是,当我通过 webpack 4 进行生产包时。在 bundle.js 文件中,您可以通过搜索“secretKey”来查看键值。当我这样做时,我能够看到:

有没有人知道一种生成用于加密的密钥的方法,但也可以隐藏该密钥以防止人们查看源代码中的 bundle.js?或其他使这种加密更安全的方法。

0 投票
2 回答
1313 浏览

google-chrome - 即使保存的数据没有改变,IndexedDB 的大小也会不断增长

我在我的 Web 应用程序中使用Redux PersistLocalForage 。我有一系列在登录时触发的操作,这些操作会更新有关用户的一些数据。触发所有操作并将数据以 JSON 格式保存在 indexedDB 后的 IndexedDB 大小约为 1.4Mb。

初始存储

但是,如果我刷新页面从而再次触发操作,或者如果注销并重新登录,即使 IndexedDB 中的值没有改变(我已经使用 JSON diff 工具仔细检查了),存储的大小也会继续增长。最终,Chrome 会在增长几 MB 后清除其中的一部分,但不会恢复到最初的正确大小。

存储容量大

IndexedDB JSON 完全相同,没有任何差异,但大小差异很大。有谁知道为什么会发生这种情况,我该如何预防?我还想知道 Chrome 何时/多久清除一次让我的 IndexedDB 混乱的任何数据,但我找不到任何参考资料。

非常感谢

0 投票
2 回答
1399 浏览

typescript - 打字稿类型的 redux-persist MigrationManifest?

我有一个使用 redux 和 redux-persist 的 Typescript 项目。是否可以使用 Typescript 进行 redux-persist 迁移配置?主要困难归结为:如果你有一个 Typescript 类型的根 redux 状态,它通常/总是代表你的状态的最新版本(不一定是以前持久的)。在迁移的上下文中,您如何表示以类型方式从持久性中读取的数据,知道它与您的状态的最新版本不匹配?一些细节:

这是用于数据迁移的 redux-persist 的 Typescript API:

有意义的是,您提供的MigrationManifest键是版本号,值是接收持久状态并返回新持久状态的函数。由于PersistedState只是一个接口,因此您似乎可以拥有一种传入类型并返回另一种类型(在您的数据架构发生更改的情况下)。

所以假设我有以下类型作为我的根持久存储类型。它符合PersistedState接口:

在未来的某个时候,我将我的模型更新为:

我需要提供一个看起来像这样的迁移:

我正在苦苦挣扎的地方是获取传入状态的类型(我的演员所在的???位置)。在像这样的简单示例中,很容易维护我的状态的每个版本的记录,并根据需要导入和使用它们:

在实践中,并不是那么简单。我有一个复杂的状态树,并不是所有的状态树都定义在一个中央且易于版本化的位置。

我可以梦想的一种解决方案,但我不知道是否可行,将以某种方式创建我的RootState类型的版本,其中所有中间类型别名和接口名称“已溶解”。就像是:

如果我能以某种自动方式创建它,那么在迁移中保存和使用将变得容易和方便。

是否有任何想法,或者关于如何在 react-redux 迁移中有效使用 Typescript 的任何其他建议?

0 投票
4 回答
6730 浏览

nested - redux-persist - 你如何将嵌套状态列入黑名单/白名单

所以我有一个包含密码和用户名的凭据对象

我想在减速器配置中将密码列入黑名单,例如

如果我使用此代码,则两种凭据状态最终都会被列入黑名单。我想保留用户名而不是密码。

可能是 redux-persist 只保留顶级状态,或者可能是语法错误,或者完全是其他东西 - 有什么想法吗?

非常感谢

0 投票
3 回答
8605 浏览

javascript - redux-persist - 什么时候持久化 reducer?

redux-persist库提供了将redux 状态树存储到某种存储中的方法,并在重新打开应用程序时重新水化。

我认为需要恢复状态树,因为它包含有用的数据,但该库还包含一个用于持久化 reducers的功能。

我不太明白背后的动机,因为我相信减速器只是改变状态的功能。与状态树中的动态数据相比,这些在代码中定义良好。

我们什么时候应该坚持 reducer?有什么例子说明它为什么有用吗?

0 投票
0 回答
47 浏览

react-native - 我可以在 PersistedGate 的加载屏幕上登录吗?Redux-Presist

我正在使用 redux-persist 开发一个应用程序。我想要做的是创建 SplashScreen,我可以在其中获取用户的令牌并登录然后导航。目前我有一个 PersistedGate<App/>用一个名为 loading 的道具包装我的组件,您可以在其中传递一个屏幕,当 Redux 获得持久状态时该屏幕将可见。

我的问题是,我可以使用 PersistedGate 中的这个加载屏幕来编程我想要在 SplashScreen 上执行的操作吗?

这是我的 index.js