在mobx-persist中为树结构补水的问题

时间:2019-01-03 09:14:06

标签: reactjs mobx mobx-persist

我在给商店充水时遇到问题,该商店包含由TreeNode对象组成的树数据结构。我正在使用以下库: https://github.com/pinqy520/mobx-persist

问题在于实例被水化为对象而不是TreeNodes。我的猜测是(在阅读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 :(得分:1)

我认为问题在于TreeNode类不可序列化,并且认为Mobx具有@serializable装饰器。并且由于自引用装饰器在Babel 5.x和Typescript中工作,因此您可以执行以下操作:

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

或者也许没有@persist,我还没有测试过