在 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
    });
  }

Codesandbox