在 getter 存在的情况下使用 Mobx makeObservable 使 setter 成为一个动作
Make setter an action using Mobx makeObservable in presence of getter
在 mobx 中,如果我想使用继承,我需要使用 makeObservable 而不是 makeAutoObservable。但是使用 makeObservable 需要我命名改变状态的动作,所以我如何声明一个 setter 是一个动作,因为它与 getter?
同名
换句话说,我写的地方是什么 SETTER_FOR_MYVAR 或者达到相同效果的另一种方法是什么?
class BaseClass {
_myvar = null
set myvar(val) {
this._myvar = val;
}
get myvar() {
return this._myvar;
}
other_action() {
this._myvar = 5;
}
constructor() {
makeObservable(this, {
_myvar: observable,
other_action: action,
SETTER_FOR_MYVAR: action
});
}
}
是的,我知道我可以将其分配给另一个辅助函数 _myvar_setter 并声明一个动作,但这看起来很难看,我希望有更好的方法。
只需将 myvar
标记为 computed
,一切都应该开箱即用(如果我理解正确的话):
constructor() {
makeObservable(this, {
_myvar: observable,
myvar: computed,
other_action: action
});
}
在 mobx 中,如果我想使用继承,我需要使用 makeObservable 而不是 makeAutoObservable。但是使用 makeObservable 需要我命名改变状态的动作,所以我如何声明一个 setter 是一个动作,因为它与 getter?
同名换句话说,我写的地方是什么 SETTER_FOR_MYVAR 或者达到相同效果的另一种方法是什么?
class BaseClass {
_myvar = null
set myvar(val) {
this._myvar = val;
}
get myvar() {
return this._myvar;
}
other_action() {
this._myvar = 5;
}
constructor() {
makeObservable(this, {
_myvar: observable,
other_action: action,
SETTER_FOR_MYVAR: action
});
}
}
是的,我知道我可以将其分配给另一个辅助函数 _myvar_setter 并声明一个动作,但这看起来很难看,我希望有更好的方法。
只需将 myvar
标记为 computed
,一切都应该开箱即用(如果我理解正确的话):
constructor() {
makeObservable(this, {
_myvar: observable,
myvar: computed,
other_action: action
});
}