如何创建可观察的单例?

时间:2018-08-16 07:47:33

标签: javascript reactjs singleton observable mobx

我有一个单例课程:

let instance = null;
  class SingletonClass {
    constructor() {
      if (!instance) {
        instance = this;
      }
     return instance;
  }
  get types() {
    return this._types;
  }
  set types(value) {
    this._types = value;
  }
}
export default SingletonClass;

我这样使用它:

import SingletonViews from './SingletonClass';
export default class MyStore {
    this._singletonClass = new SingletonClass();
    @observable types;
    this.types= this._singletonClass.types; //i dont know what to do here to bind this two together
}

但是无论何时this._singletonClass.types更新types observable都不会。我该怎么办? 我可以拥有@observable singleton还是可以将其属性绑定到@observable

1 个答案:

答案 0 :(得分:0)

您的“单个”本身不是可观察的,您的意图是什么?只是代理单例值?

由于您似乎不需要初始化单例,因此我将以此方式进行重写:

单人

import * as mobx from 'mobx'

const {observable, action} = mobx

class SingletonClass {
  @observable types

  @action setTypes (value) {
    this.types = value;
  }
}


export default new SingletonClass()

我的商店

import singletonClass from './SingletonClass'

export default class MyStore {
  singletonClass = singletonClass
}

现在,您可以在应用程序中的某个地方使用商店,并观察您的单例。