Я получаю полный контракт данных из бэкэнда каждый раз, когда пользователь что-то меняет.Я делаю это потому, что проверки / расчеты выполняются на бэкэнде.Поэтому после получения я установил весь контракт с данными в root.Пример репо ниже.Дело в том, что даже если я получу точно такие же данные, Mobx переопределяет все приложение, потому что PersonWithItem
зависит от Data
.
Я пытался удалить observable
декоратор с Data
.В этом случае приложение не будет отображаться вообще.Угадай, потому что не получатель, кроме Data's
не вызывается.Я также пытался использовать lodash merge
для изменения исходного объекта.Проблема с lodash заключается в том, что если я получу некоторую undefined
проп, он не заменит проп с значением.Поэтому мне кажется, что мне нужно написать собственное слияние, что не является хорошим вариантом.
Извлечение показано в button
обратном вызове.
https://github.com/paatrofimov/mobx-state-tree/blob/demo/packages/mst-example-todomvc/src/components/App.tsx
Может ли эта проблема быть решена без явной установки каждой опоры Data
?В реальном приложении мой Data
- это крупный бизнес-контракт, а также универсальный.Поэтому я не могу явно установить все его свойства, потому что обычный код не знает формы Data
.