如何创建单例可观察对象?
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
}
现在您可以在应用中的某处使用您的商店并观察您的单例。
我有一个单身人士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
}
现在您可以在应用中的某处使用您的商店并观察您的单例。