Как сделать графологию графом наблюдаемой с помощью Mobx? - PullRequest
0 голосов
/ 19 апреля 2020

Цель

Я пытаюсь сделать экземпляр класса Graphology Graph наблюдаемым с помощью Mobx. Это включит рендеринг компонентов на основе изменений в графике.

Мне известен этот вопрос (и ответ): Как сделать объекты класса наблюдаемыми в MobX?

Однако, хотя в прошлом это работало на меня, у этого класса, кажется, есть что-то хитрое. Ссылка на источник графологии: https://github.com/graphology/graphology/blob/master/src/graph.js

Попытка

Кажется, что данные об узлах и ребрах хранятся в _nodes и _edges, поэтому я попытался следующий ..

import { observable, decorate, computed, action } from "mobx";
import Graph from 'graphology';

decorate(Graph, {
  _nodes: observable,
  _edges: observable,
})

export class GraphStore {
  @observable graph = new Graph({multi: true, allowSelfLoops: false, type: "directed"});})
}

export const graphStore = new GraphStore()

Однако это возвращает:

[Error] RangeError: Maximum call stack size exceeded.
    useObserver (bundle.js:70627)
    renderWithHooks (bundle.js:96031)
    updateFunctionComponent (bundle.js:97615)
    performUnitOfWork (bundle.js:102300)
    workLoop (bundle.js:102340)
...

и

[Error] Error: [mobx] Cannot make property '_nodes' observable, it is not configurable and writable in the target object
invariant — bundle.js:70923
fail — bundle.js:70918
assertPropertyConfigurable — bundle.js:70994
(anonymous function) — bundle.js:74880
(anonymous function) — bundle.js:71275
...

Вопрос

Что я должен изменить, чтобы сделать граф наблюдаемого объекта?

...