2

我正在尝试加载一个 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(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){

});

所以之后Config.init(),我们就可以访问加载的数据了Config.ApiBaseUrl。如果我们将配置导入另一个文件,我们会丢失这些数据,例如home.jsx

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()被调用并设置类属性,我就可以从我们导入此类的任何地方访问属性?

4

0 回答 0