Проблема с регидратацией древовидной структуры в mobx-persist - PullRequest
0 голосов
/ 03 января 2019

У меня проблемы с увлажнением магазина, который содержит древовидную структуру данных, состоящую из объектов TreeNode. Я использую следующую библиотеку: https://github.com/pinqy520/mobx-persist

Проблема в том, что экземпляры гидратируются как объекты вместо узлов дерева. Я предполагаю (после прочтения https://github.com/pinqy520/mobx-persist/issues/25), что я не могу использовать определение класса для сохранения в самом классе, но я не уверен, действительно ли это является причиной.

Вот мой класс TreeNode:

export default class TreeNode {

    @persist id = Math.random();
    @persist @observable title = "Root";
    @persist @observable collapsed = false; // if node should be shown opened
    @persist('list', TreeNode) @observable childNodes  = []; // <- should this work?
    ...

Любые советы приветствуются!

1 Ответ

0 голосов
/ 10 января 2019

Мне кажется, проблема в том, что класс TreeNode не сериализуем, и думаю, что Mobx имеет декоратор @serializable. А так как самодостаточные декораторы работают в Babel 5.x и Typescript, вероятно, вы можете сделать это следующим образом:

@persist @serializable(list(object(TreeNode))) @observable childNodes = [];

или, может быть, без @persist, я не проверял

...