我有3个班级名A.js
B.js
和Util.js
Util.js:
只需一个静态函数来获取数据并存储它,然后它不需要每次都发出请求。
import $ from 'jquery';
let store={};
class Util {
static storeGet(url,cb){
//console.log(store);
if(store[url]){
cb(store[url])
}else{
$.get(url, (data) => {
store[url]=data;
cb(data);
});
}
}
}
export default Util;
我的A
和B
看起来像那样
....
import Util from './util';
class App extends React.Component {
constructor(props) {
super(props);
this.state = {stories: []};
}
componentDidMount() {
Util.storeGet(Api.getList(), (result) => {
const data = result;
if (data) {
this.setState((prevState) => ({
stories: data.stories
}));
}
});
}
render() {
...
现在我可以从A
或B
,
并且A
和B
都可以正常工作,并且似乎共享store
变量。
但我们知道A
或B
无法直接访问store
。
所以我想知道store
变量范围究竟在哪里?
为什么不能直接访问store
,而是通过函数storeGet
??
答案 0 :(得分:0)
在ES6模块内部声明的所有变量对该模块都是私有的。哪个好如果您确实想将store
变量直接提供给其他代码使用(在这种情况下可能不是一个好主意),则可以这样更改代码:
export let store = {};
然后像这样使用它:
import { store } from './util';