Цель
Я пытаюсь сделать экземпляр класса 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
...
Вопрос
Что я должен изменить, чтобы сделать граф наблюдаемого объекта?