mobx 无法获得管理 -- 在扩展 class 上?

mobx Cannot obtain administration -- on extended class?

我有下面这个使用 extends 关键字的 ES6 class 示例。

import { computed, observable, observe } from "mobx";
class Base {
  @observable position = 1
  @computed get doublePosition(){
    return this.position * 2
  }
}

class Extended extends Base{
  constructor(){
    super()
    observe(this.doublePosition, () => {
      debugger;
    })
  }
}

const test = new Extended();

这会引发错误 Uncaught Error: [mobx] Cannot obtain administration from 2

我相信这是因为子 class Extended 正试图观察父 class 上的 属性。有没有规律。我没想到这个守卫是什么原因?在这个例子中有什么方法可以允许对 subclass 进行管理吗?是否有建议的模式来处理这个问题?我的代码库严重依赖 extends 关键字来实现混合行为。

我认为你应该这样做:

    observe(this,"doublePosition", () => {
      debugger;
    })

observe(this.doublePosition,()=>{})observe(this,"doublePosition",()=>{}) 不是一回事。

在第一种情况下,您观察到 this.doublePosition,在第二种情况下,您观察到 属性 of this ...我知道,这很混乱:)

请问你为什么不用reaction

您可以在 mobx docs

中找到有关 observable 函数的更多信息