如何在React Native中使用重复的常量和函数

时间:2019-12-05 14:14:36

标签: javascript react-native

嘿,所以我在React Native上看到了很多有关全局变量用户的文章。大多数帖子都说“不要过度使用它”,而有些帖子对此没有任何反对,而另一些则鼓励完全不要这样做。在不过度使用方面,我不确定确切如何量化。基本上,我想重用的变量和函数是api地址(有时在本地运行,有时在云上运行/如果我更改云提供商,则希望能够轻松更改它)。我还想要一个全局错误处理函数,以用于当获取(每个组件至少有一个)被拒绝网络连接时使用。我还想为PUBSUB消息传递系统提供枚举,以便在接收到特定的消息正文时使用。如果可能在使用令牌身份验证时希望有一个全局刷新令牌功能,并且如果遇到令牌过期错误,则我不想在每个组件中都有重复的提取(刷新令牌)功能。现在,我在global.js文件中声明所有这些内容,然后将其导入到index.js文件中。我的global.js文件如下所示:

rails g migration add_room_to_reservations room:belongs_to

class Reservation
  belongs_to :room
end

class Room
  has_many :reservations
end

我也看到过使用redux和flux,但是对于常量来说似乎有点过分了。另外,在应用程序启动之前,我将必须初始化整个redux reducer,如果这是唯一的选择,我不确定该怎么做。

编辑:如果可能的话,我还希望能够使用全局函数将内容存储到redux中

1 个答案:

答案 0 :(得分:2)

我会有一个看起来像这样的文件:

Api_definitions.js:

export const apiDefinitions = {
    apiUrl: "192.168.1.90",
    errorHandler: (error) => {
        // do something
    },
    // any other varialbes you need here
}

(() => {
    if (environment === 'testing') {
        apiDefinitions.apiUrl = "192.168.1.15"
    }
})();

在其他任何文件中,

import {apiDefinitions } from "../Api_definitions.js";

然后apiDefintions可以从任何导入位置访问。我认为这是正常的React模式。