如何创建单例可观察对象?

How to create a singleton observable?

我有一个单身人士class :

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

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

因为你似乎不需要初始化你的单例,我会这样重写它:

单例

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
}

现在您可以在应用中的某处使用您的商店并观察您的单例。