首页 > 解决方案 > mobx 无法获得管理——在扩展类上?

问题描述

我有以下使用extends关键字的 ES6 类示例。

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

我相信这是因为子类Extended试图观察父类的属性。有没有图案。没想到这个守卫是什么原因?在这个例子中,有没有办法允许对子类进行管理?有没有建议的模式来处理这个?我有一个代码库,它严重依赖于extendsmixin 行为的关键字。

标签: javascriptecmascript-6mobx

解决方案


我相信你应该这样做:

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

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

在第一种情况下,您正在观察 的this.doublePosition在第二种情况下,您正在观察...的属性this我知道,这很令人困惑 :)

我可以问你为什么不使用 areaction吗?

您可以在mobx 文档observable中找到有关该功能的更多信息


推荐阅读