[英]Javascript modules and application wide data
在编写javascript模块,在何处以及如何存储可在整个应用范围内使用的数据时,我感到困惑。
说我有一个模块,可以从服务器获取一些非常需要的数据。 可以说它是配置数据。
function getData() {
return fetch('http://data.com/my-data')
.then(response => response.json())
}
export default getData; // Returns a promise
该应用程序是一个React应用程序,需要呈现一些组件,但是在不确定的时候会使用我们的数据。
import getData from 'getData.js';
getData.then((data) => {
render( <TheBestApp />, document.getElementById(‘root') );
});
在<TheBestApp />
层次结构中的某个时候,将使用数据。
获取数据以供我们所有应用程序使用的最佳方法是什么? 这些是我看到的2个选项:
还有其他方法吗? 最佳做法是什么?
React不处理应用程序数据。 对于此类功能,Redux是一个广泛使用的库,它具有一个名为react-redux
的姊妹库,该库使组件与应用程序级别数据之间的交互非常容易。
我建议从此处开始,因为尝试将内部状态用于此类数据可能会很麻烦; 即。 您可能会开始在不需要数据的组件上下传递数据。
我将回答您问题的“其他方式”部分,因为我不确定这是否是最佳实践,尤其是在ReactJS环境中(我没有经验)。
现在,您已经不相信我的回答:
在AngularJS中,这是我要使用Service的地方,就数据而言,它本质上是单例。 您可以在ES6中使用类的静态函数对此进行仿真。
例:
export default class DataService {
static getData() {
if(this.data) {
return Promise.resolve(this.data);//keeps function calls consistent
}
return new Promise(() => {
fetch('http://data.com/my-data')
.then(response => {
response.json()
})
.then((data) => {
this.data = data;
resolve(data);
})
}
}
}
然后将其导入并使用DataService.getData()进行调用。 如果您没有数据,它将获取它,否则它将立即将其提供给您。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.