Я ищу наилучшее решение, как реализовать @observable в структуре дерева json-объектов (например, дерево), может быть очень глубоким. и каждый узел имеет много свойств, но мне нужно наблюдать только одно свойство в узле дерева. Просто если я сделаюMobx наблюдаемый глубокий объект
@observable questionnaire = {}
это работает, но я думаю, что талия. Мне нужно наблюдать только свойство «selected». Вот структура 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
},
...
]
}, ...
Как вы думаете, если мы начнем наблюдать childNodes, тогда все свойства этого узла станут наблюдаемыми? –
Вы в точности правы. Чтобы предотвратить это, нам нужно использовать модификатор 'asFlat'. Я обновил свой ответ. –
Mouad Debbar Спасибо за ваш ответ. Я принимаю ваш ответ как решение моей проблемы с минимальной модификацией вашего кода. Я не думаю, что мне нужна эта строка вообще @observable childNodes = asFlat ([]); Свойство «selected» будет наблюдаться каждый раз, когда я «новый узел (дочерний элемент)». Еще раз спасибо за вашу помощь. :-) –