kso*_*ngz 16 javascript reactjs react-native
我找不到类似的东西
$rootScope
Run Code Online (Sandbox Code Playgroud)
对于React Native,我想在不同的视图之间共享几个变量.
Ger*_*ate 29
React Native中的全局范围是可变全局的.
global.foo = foo
然后你可以global.foo随处使用.
但是不要滥用它!在我看来,全局范围可能用于存储全局配置或类似的东西.在不同视图之间共享变量,作为您的描述,您可以选择许多其他解决方案(使用redux,flux或将它们存储在更高的组件中),全局范围不是一个好的选择.
定义全局变量的一个好习惯是使用js文件.例如global.js:
global.foo = foo;
global.bar = bar;
Run Code Online (Sandbox Code Playgroud)
然后,确保在项目初始化时执行它.例如,导入文件index.js:
import './global.js'
// other code
Run Code Online (Sandbox Code Playgroud)
现在,您可以在任何地方使用全局变量,而不需要在每个文件中导入global.js.尽量不要修改它们!
例如,您可以使用静态属性导出类,然后在需要时导入.
在main.js例如:
export class AppColors {
static colors = {main_color: "#FFEB3B", secondary_color: "#FFC107"}
}
Run Code Online (Sandbox Code Playgroud)
在其他文件中,需要获取此颜色
import { AppColors } from './main.js';
class AnotherPage {
constructor() {
super();
console.log(AppColors.colors); // youla! You will see your main and secondary colors :)
}
}
Run Code Online (Sandbox Code Playgroud)
在全局范围内存储变量在React中是一种反模式.React旨在与单向数据流一起使用,这意味着数据从组件向下流向其子级.这是通过道具的传递来实现的.
为了在多个视图之间共享一个值,您需要将数据存储在共享父组件上,并将其作为propOR存储在一个负责数据管理的单独实体中.在ReactJS中,这是通过像Flux这样的模式实现的,但我不确定反应原生的选项.