Mobx可观察的深层物体
Mobx observable deep object
我在寻找如何在深度json对象结构(例如树)上实现@observable的最佳解决方案,数据树可能会非常深入。每个节点有许多属性,但我只需要观察树节点中的一个属性。只要我做
@observable questionnaire = {}
它工作,但我认为那是腰部。我只需要观察"选定"属性。这是json结构。如果我错了,请指正,这里是问卷对象的简化。
[
{
"id": "1",
"title": "level 1",
"description": "text",
"type": "Question",
"selected": false,
"childNodes": [
{
"title": "level 2",
"description": "text",
"type": "Question",
"selected": false,
"childNodes": [
{
"title": "level 3",
"description": null,
"type": "Question",
"selected": false,
"childNodes": [
{
"title": "level 4 1",
"childNodes": [],
"description": null,
"type": "Checkbox",
"selected": false
},
{
"title": "level 4 2",
"childNodes": [],
"description": null,
"type": "Checkbox",
"selected": false
},
{
"title": "level 4 3",
"childNodes": [],
"description": null,
"type": "Checkbox",
"selected": false
},
...
]
}, ...
一种方法是有一个Node
类实现如下:
class Node {
@observable selected = false;
@observable childNodes = asFlat([]);
constructor(data) {
// Recursively create `Node` objects for all children.
data.childNodes = data.childNodes.map(child => new Node(child));
Object.assign(this, data);
}
}
然后从你的顶级json对象中创建一个Node
对象:new Node(json)
.
此溶液将只观察selected
和childNodes
。这并不理想,因为您需要将json对象包装在Node
对象中。但是我想不出别的办法来。
相关文章:
- knockoutjs可观察数组
- 多次发射多个可观察器的问题
- 未激发路由的控制器属性上的观察者
- 无法在关闭弹出窗口时传递可观察的数据
- firefox插件:退出不工作的应用程序观察器
- 如何收集Knockout可观察性以放入JSON
- 在rxjs中巧妙的蒸汽可观察合并
- Knockout observable没有观察到其中一个属性
- 如何在Mobx中执行可观察函数
- Mobx:可观察数组无法正确显示
- 对数组中所有对象的可观察属性进行单个MobX自动运行或反应
- Mobx可观察的深层物体
- 没有机会让一个强类型对象被mobx观察到
- Mobx:添加new (array)属性到可观察对象
- MobX -检索可观察数组对象的索引
- MobX -替换可观察数组中的项
- MobX -重置所有存储可观察对象回到初始状态
- Mobx -反应:注射和观察一起
- MobX - 将参数作为可观察对象传递给操作,以更改可观察值
- 我可以在 MobX 中手动触发特定属性的观察器吗?