如何在多个文件之间共享全局变量?

时间:2017-09-28 18:55:53

标签: javascript node.js reactjs ecmascript-6

我有两个文件都需要一个全局变量。我有一个点击按钮。单击它时,运行一个函数。代码如下所示:

file1:

var globalVar = '', // The global variable

<button onClick = {() => this.edit(arg1)}></button>
function edit (arg1){

   globalVar = arg1;
}

module.exports = globalVar;

我有另一个文件,看起来像这样:

file2的:

var globalVar = require(./file1);

function openModal(){

if (globarVar != ''){
 do something

} }

问题在于,当我单击按钮时,globalVar会在edit()函数中更新,但我在file2中的console.log(globalVar)显示''。我的问题是如何将globalVar传递给file2我点击按钮了吗?

1 个答案:

答案 0 :(得分:1)

如果你真的想要一个全局变量(当然不可取)那么你总是100%自由地做

window.globalVar = 0;

在任何模块中。

更强大的解决方案当然是将此全局变量放在某种专用模块中,例如

globalVar.js

export default {
    value: 0
};

然后你可以

import globalVal from './globalVar';

globalVal.value = 'whatever';

需要任何模块。

唯一的风险是webpack可能会复制同一个&#34; global&#34;如果您要进行代码拆分,则会将值分为多个捆绑包,具体取决于您的设置。所以单独的模块将使用他们自己的这个不那么全局变量的本地副本。