我一直在研究React / Flux,并对组件外部的变量声明感到困惑,如下面的代码所示。
CounterComponent.js
var count;
function getCount (){
}
var CounterComponent = React.createClass({
getInitialState: function(){
return getCount();
},
render:function(){
}
})
module.exports = CounterComponent;
如上面的代码所示,疑问是变量count和函数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中呢?
答案 0 :(得分:2)
这取决于您使用的构建系统,如果您使用browserify或webpack之类的系统,则不会有全局变量。
因此,如果您不使用bundler库,我建议您使用匿名函数包装源代码,这样就不会污染全局命名空间。
但我强烈建议您使用webpack来看一下现代方法,这似乎在React和Flux社区中更受欢迎。