从另一家商店mobx调用商店

时间:2017-11-13 04:11:33

标签: javascript reactjs ecmascript-6 mobx mobx-react

我有2家商店,如下面

存储1

 export default class ContactInformationModel {
    @observable id;
    @observable type;
    @observable description;
    @observable mode;

    constructor(id,type,description,mode,show) {
      this.id=id;
      this.type=type;
      this.description=description;
      this.mode=mode;

        }
}


export default class ContactInformationController {
    @observable contact_informations = [];

    addContactInformation(data){
      var id= data.hasOwnProperty("id") ? data.id: this.getInsertedId(data.mode); //auto increment for store mvc;
      var type=data.type;
      var description=data.description;
      var mode=data.mode;
      this.contact_informations.push(new ContactInformationModel(id,type,description,mode));
     }



     @computed get SellerContact(){
      return this.contact_informations.filter(c => c.mode == 'seller'); 
     }


}

存储2

import ContactInformationController from  './ContactInformationController';
var contact_information_store=new ContactInformationController();
export default class SellerController {
    @observable seller = {}; //only one entry

    saveSellerContact(){
      //pull contact_information_store
      var contact_information=contact_information_store.SellerContact;

    }

}

当我打印contact_information时,它是空白数组,但它在jsx中呈现。我仍然是反应/ mobx的新手,任何帮助将不胜感激。感谢

1 个答案:

答案 0 :(得分:2)

我认为问题在于你有两个不同的ContactInformationController类实例。如果您导出ContactInformationController的实例,则会解决此问题,因此您在整个应用中使用相同的实例。

class ContactInformationModel {
  @observable id;
  @observable type;
  @observable description;
  @observable mode;

  constructor(id, type, description, mode, show) {
    this.id=id;
    this.type=type;
    this.description=description;
    this.mode=mode;
  }
}

class ContactInformationController {
  @observable contact_informations = [];

  addContactInformation(data){
    var id= data.hasOwnProperty("id") ? data.id: this.getInsertedId(data.mode); //auto increment for store mvc;
    var type=data.type;
    var description=data.description;
    var mode=data.mode;
    this.contact_informations.push(new ContactInformationModel(id,type,description,mode));
  }

  @computed get SellerContact(){
    return this.contact_informations.filter(c => c.mode == 'seller'); 
  }
}

export { ContactInformationModel };
export default new ContactInformationController();