1
我一直在研究React/Flux,并且对组件外变量的声明感到困惑,如下面的代码所示。React + Flux - 如何避免全局变量
CounterComponent.js
var count;
function getCount(){
}
var CounterComponent = React.createClass({
getInitialState: function(){
return getCount();
},
render:function(){
}
})
module.exports = CounterComponent;
如上面的代码中,怀疑是变量数量和功能getCount将似乎是全球在这里。可以在这里声明变量和函数,在组件之外或需要放置在里面。这看起来像全球污染。另外,如果我们考虑一个商店,在下面看到了很多例子,在这里,变量CHANGE_EVENT似乎是全球性的,没关系。
CounterStore.js
var CHANGE_EVENT = 'change';
var MainStore = assign({},EventEmitter.prototype, {
AppDispatcher.register(function(payload){
var action = payload.action;
switch(action.actionType){
}
});
});
module.exports = MainStore;
...我已经寻找这个答案,但不可能得到正确的答案。从JavaScript的角度来看,它看起来像它的污染全球,但在React中呢?
我使用的是browserify,但如果我在开发工具中看到js文件,则所有的js文件都被连接在一起,并且变量看起来像是全局的。不是吗? – whyAto8
不,browserify不只是连接文件。变量的范围与它们定义的文件绑定。而且,您只能使用module.exports或require语句在文件间共享变量。这是browserify(或webpack)的一个非常好的属性,并允许您编写代码而不用担心可变冲突。如果你想测试它,只需打开你的控制台并键入你认为可能是全局的变量名。谢谢。 –
我刚刚编辑了我的问题,并提供了更多的细节,特别是module.exports的东西。你可以看看你的答案是否仍然有效。 – whyAto8