用于在 React 应用程序中存储常量的全局 es6 模块 - 防止垃圾收集

Global es6 module to store constants in react app - prevent garbage collection

我想在模块(导出)中存储一些变量,以在我的 React 应用程序中用作常量。我想避免上下文,因为不需要重新渲染组件,而且我需要在我的反应组件之外使用这些常量。

我应该在哪里做(导入到哪里),以防止垃圾收集?

我的一个想法是在我的根组件之上导入并重新导出它。

编辑:

更准确的说,会有一个组件将常量设置一次(改变变量),以便其他组件或文件可以访问它。

所以,您需要的是某种 setter/getter 模式。虽然我通常不推荐它,除非你知道你在做什么,因为 React 不会在变量更改时重新渲染 并且因此你需要 确保变量在使用前设置好.

您应该拥有类似于下面示例的内容,以便它按您想要的方式工作。您可以在 Codesandbox.

上找到它的示例
export let MY_VARIABLE = "";

export const setMyVariable = value => (MY_VARIABLE = value);

PS:我在代码中添加了一些 console.log,以便您了解 import/get/set 的行为方式。

您可以在 src 文件夹中创建一个 config.js 并编写您的常量变量,如

//config.js module.exports = { CONST_VAR : 'const value', }

在您的组件中导入 config.js 并使用它

深入研究后,我发现 es6 模块规范指出:

当导入你的模块时,它得到 loaded => parsed => evaluatedcached(单例)。它还说当您导入模块时,它的值是通过引用传递的(也称为赋值)。我没有发现任何提及何时或如何从该缓存中卸载 es6 模块的内容。

这意味着,当您导入一个模块后,只要程序存在,它就一直存在 运行,并且所有模块都直接访问它的值。

参考