reactjs的异步加载配置数据
我正在尝试加载一个config.json文件,其中包含的属性应该在整个应用程序中用作常量 我有一个reactjs的异步加载配置数据,reactjs,ecmascript-6,refluxjs,Reactjs,Ecmascript 6,Refluxjs,我正在尝试加载一个config.json文件,其中包含的属性应该在整个应用程序中用作常量 我有一个config.jsx,如下所示: import React from 'react'; import $ from 'jquery'; var config = { init(){ var deferred = $.Deferred(); let obj = this; $.get("/app/config/config.json").then(function(res
config.jsx
,如下所示:
import React from 'react';
import $ from 'jquery';
var config = {
init(){
var deferred = $.Deferred();
let obj = this;
$.get("/app/config/config.json").then(function(response) {
obj.ApiBaseUrl = response.ApiBaseUrl;
deferred.resolve();
}, function(errorResponse) {
deferred.reject();
});
return deferred.promise();
},
ApiBaseUrl: null
}
export default config;
然后在加载应用程序之前加载数据并设置配置,如app.jsx
所示:
import React from 'react';
import Router from 'react-router';
import routes from './routes';
import Config from './config';
Config.init().then(function(resp){
Router.run(routes, Router.HistoryLocation, Handler => React.render(<Handler />, document.body));
}, function (err){
});
import React from 'react';
import Config from '../config';
Config.ApiBaseUrl; // This is null.
class Home extends React.Component {
render() {
return (
<div>
</div>
);
}
}
export default Home;
我如何将我的配置类编写成一个单一的类,一旦调用了
config.init()
,并且设置了类属性,我就可以从导入该类的任何地方访问这些属性了?当然它是null
那里。您没有等待它解决。您是否考虑过从“/app/config/config.json”(或类似的东西)导入配置?这样就不会是异步的。将flux与appStore一起使用。使用配置数据填充appStore.appData。使用appData触发顶级组件。根据需要传递。@JanakaStevens你有这种功能的链接吗?这个项目有多种模式。查看RefluxPages了解使用appStore的示例。我还没有路由器模式,我喜欢使用WebSocket。但总的模式是存在的。