是否可以在两个 mobx 商店之间创建继承?

Sve*_*eta 7 mobx mobx-react

我正在使用 mobx/react 构建两个小部件,其中所有逻辑都位于商店内。两者共享大部分设计规则,因此他们的商店 95% 相同。有聪明的方法来处理这种情况吗?例如,是否可以创建这样的继承?

class Animal { 
  @observable name = "";

  constructor(name) {
    this.name = name;
  }

  @computed get sentence() {
    console.log(this.name + ' makes a noise.');
  }
}

class Dog extends Animal {
  @observable isBarking = false;
  @computed get bark() {
    if (this.isBarking){
        console.log('The dog is barking');
    }
  }
  @action
    setIsBarking(isBarking) {
    this.isBarking = isBarking;
  }  
}
Run Code Online (Sandbox Code Playgroud)

max*_*llo 0

您是否考虑过 MobX 状态树(https://github.com/mobxjs/mobx-state-tree)来管理您的两个类AnimalDog

这将为您提供强大的compose功能,可以使用它来代替继承。

这可能是对您最有用的部分:“使用类型组合模拟继承” https://github.com/mobxjs/mobx-state-tree#simulate-inheritance-by-using-type-composition