2017-02-14 15 views
1

私はジェネレータによって定義されたconfig.jsファイルを持っています。反応アプリケーションのグローバル設定オブジェクトを使用

'use strict'; 

import baseConfig from './base'; 

let config = { 
    appEnv: 'dev', // feel free to remove the appEnv property here, 
    baseUrl:'https://mod970274.sharepoint.com',//'http://maliye.milliemlak.gov.tr', 
    listName:'' 
}; 

export default Object.freeze(Object.assign({}, baseConfig, config)); 

ここではそれをどのように呼びますか。

import config from 'config'; 

class FooterState { 
    @observable items =[]; 
    constructor(){ 
     config.listName = 'FooterMenu'; 
     this.getItems(); 
    } 
    getItems() { 
    fetch(`${config.baseUrl}/_api/web/lists/getbytitle('${config.listName}')/items`, { 
     method: 'GET', 
     headers: { 
      'Accept': 'application/json', 
      'Content-Type': 'application/json', 

しかし、例を使用しても、コンストラクタでは未定義の例外がスローされます。これは、それがどのように見えるかです:

enter image description here

は、どのように私はプロジェクト

答えて

2
export default Object.freeze(Object.assign({}, baseConfig, config)); 

あなたはそのプロパティのいずれかを再割り当てすることはできませんを意味し、このラインfreezesオブジェクト、どこでもconfigオブジェクトを使用することができます。

Object.freeze()メソッドはオブジェクトをフリーズさせます。つまり、新しいプロパティが追加されないようにします。既存のプロパティの削除を防ぎます。既存のプロパティ、またはその列挙可能性、構成可能性、または書き込み可能性が変更されることを防止します。このメソッドは、フリーズしているオブジェクトを返します。

あなたは、このオブジェクトのデータを変更したい場合は、あなたがObject.freezeを削除する必要があります。

export default Object.assign({}, baseConfig, config) // Or just: export default {...baseConfig, ...config} 
1

あなたのconfigオブジェクトが凍結されている:

export default Object.freeze(Object.assign({}, baseConfig, config)); 

したがって、あなたがそれを変更することはできません。今、あなたは2つのオプションがあります。

  1. をあなたはconfig.jsを変更できない場合Object.assign()を使用して独自の可変派生configオブジェクトを定義し、config.js
  2. Object.freezeへの呼び出しを削除:

_

/* mutable-config.js */ 
import config from 'config' 
module.exports = Object.assign({}, config) 

コードにconfigの代わりにmutable-configを使用できます。

import config from 'mutable-config' /* instead of from `config` */ 

class FooterState { 
    @observable items =[]; 
[...] 
関連する問題