我一直在研究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中呢?
这取决于您使用的构建系统,如果您使用像browserfy或webpack这样的系统,那么没有变量是全局的。
所以,如果你不使用bundler库,我建议你用一个匿名函数包装你的源代码,这样你就不会污染全局命名空间。
但我强烈建议你看看使用webpack的现代方法,它似乎在React和Flux社区中更受欢迎。