我在为包含由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?
    ...

任何提示欢迎光临!

最佳答案

我认为问题在于TreeNode类不可序列化,并认为Mobx具有@serializable装饰器。由于自引用装饰器在Babel 5.x和Typescript中工作,因此您可以执行以下操作:
@persist @serializable(list(object(TreeNode))) @observable childNodes = [];
也许没有@persist,我还没有测试

10-08 05:53