React + Flux - 如何避免全局变量

时间:2015-12-14 11:23:46

标签: javascript reactjs global-variables reactjs-flux

我一直在研究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中呢?

1 个答案:

答案 0 :(得分:2)

这取决于您使用的构建系统,如果您使用browserifywebpack之类的系统,则不会有全局变量。

因此,如果您不使用bundler库,我建议您使用匿名函数包装源代码,这样就不会污染全局命名空间。

但我强烈建议您使用webpack来看一下现代方法,这似乎在React和Flux社区中更受欢迎。