React Native是否具有全局范围?如果没有,我怎么能模仿呢?

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.尽量不要修改它们!


Ego*_*dev 7

例如,您可以使用静态属性导出类,然后在需要时导入.

在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)


Jak*_*rsh 6

在全局范围内存储变量在React中是一种反模式.React旨在与单向数据流一起使用,这意味着数据从组件向下流向其子级.这是通过道具的传递来实现.

为了在多个视图之间共享一个值,您需要将数据存储在共享父组件上,并将其作为propOR存储在一个负责数据管理的单独实体中.在ReactJS中,这是通过像Flux这样的模式实现的,但我不确定反应原生的选项.

  • 同意这通常是反模式,但这并不意味着你不应该在任何情况下使用全局变量.React Native本身在Javascript中定义了一个名为`__DEV__`的全局变量.这是怎么做的,我怎样才能创建类似的东西,例如`__MYDEV__`?(看起来这可能是不可能的,你可以得到的最接近的是[环境变量](http://stackoverflow.com/questions/33117227/setting-environment-variable-in-react-native).) (11认同)