mobx Невозможно получить администрирование - в расширенном классе? - PullRequest
2 голосов
/ 21 июня 2020

У меня есть следующий пример класса ES6 с ключевым словом extends.

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 пытается наблюдать свойство родительского класса. Есть узор. Я этого не ожидал, в чем причина этого охранника? Есть ли способ разрешить администрирование подкласса в этом примере? Есть ли предложенный шаблон для решения этой проблемы? У меня есть кодовая база, которая сильно зависит от ключевого слова extends для поведения миксина.

1 Ответ

1 голос
/ 22 июня 2020

Я считаю, что вам следует сделать:

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

observe(this.doublePosition,()=>{}) и observe(this,"doublePosition",()=>{}) - это не одно и то же.

В первом случае вы наблюдаете значение из this.doublePosition, во втором случае вы наблюдаете свойство из this ... Я знаю, это сбивает с толку:)

Могу я спросить, почему вы без использования reaction?

Дополнительную информацию о функции observable можно найти в mobx docs

...