我正在开发React Native应用程序。React Native中的全局状态
我想保存登录人员的用户标识,然后检查用户是否在每个组件中登录。
所以我在找什么就像cookies,会话或全局状态。
我已经读过,我应该使用Redux,但这似乎过于复杂,并且很难使其与react-navigation
一起使用。它迫使我为几乎所有事物定义动作和缩减器,但我唯一想要的是能够访问所有组件中的单个全局状态/变量。
有没有其他的选择,或者我真的应该重新构建我的整个应用程序使用Redux?
我正在开发React Native应用程序。React Native中的全局状态
我想保存登录人员的用户标识,然后检查用户是否在每个组件中登录。
所以我在找什么就像cookies,会话或全局状态。
我已经读过,我应该使用Redux,但这似乎过于复杂,并且很难使其与react-navigation
一起使用。它迫使我为几乎所有事物定义动作和缩减器,但我唯一想要的是能够访问所有组件中的单个全局状态/变量。
有没有其他的选择,或者我真的应该重新构建我的整个应用程序使用Redux?
在状态管理方面有一些alternatives to Redux。我会建议你看看连身裤和Mobx。但是不要指望它们比Redux更容易。国家管理主要是一件神奇的事情,大部分的发明都发生在幕后。
但无论如何,如果你觉得你需要一些全球性的国家管理,无论是Redux还是Mobx等,都值得花时间掌握其中的一种解决方案。我不会推荐使用AsyncStorage
或其他任何方法来达到此目的。
像“AsyncStorage”这样的组件是为了持久化,我认为OP关心的是管理通常应该在内存中的应用的状态。 – sooper
@sooper,这就是为什么我不推荐'''AsyncStorage'''。 – milkersarac
我通常做全局是这样的:
我创造一个globals.js
module.exports = {
USERNAME: '',
};
类似的东西,以存储用户名,那么你只需要输入:
GLOBAL = require('./globals');
而且如果你想存储数据,可以说你想保存用户名只是做:
var username = 'test';
GLOBAL.USERNAME = username;
现在你去了,你只需要在你想要的页面上导入GLOBAL并使用它,只需使用if (GLOBAL.username == 'teste')
即可。
这种方式工作不正常,不会触发像this.state – Ansyori
我不认为拥有多个商店是一种罪行,其中一个商店是包含一个值(或对象或数组或其他)的东西,并且当存储的数据被修改时向其所有订阅的侦听器提供更改通知。 – EpicPandaForce
在反应组件中还有其他替代方法,例如上下文变量,但我认为从长远来看,您可能会发现更多结构更易于管理(和测试)。它起初看起来令人生畏,但你很快就会意识到它没有太多的东西。 – sooper