簡體   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