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