我在为包含由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
,我还没有测试