繁体   English   中英

在存在 getter 的情况下使用 Mobx makeObservable 使 setter 成为一个动作

[英]Make setter an action using Mobx makeObservable in presence of getter

在 mobx 中,如果我想使用 interheritance,我需要使用 makeObservable 而不是 makeAutoObservable。 但是使用 makeObservable 需要我命名改变 state 的动作,所以我如何声明一个 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
    });
  }
}

是的,我知道我可以把它交给另一个助手 function _myvar_setter 并声明一个动作,但这看起来很难看,我希望有更好的方法。

只需将myvar标记为computed ,一切都应该开箱即用(如果我理解正确的话):

  constructor() {
    makeObservable(this, {
      _myvar: observable,
      myvar: computed,
      other_action: action
    });
  }

代码沙盒

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM