Вопрос проверяет понимание реактивных архитектур и того, как MobX автоматически обновляет UI.
MobX построен на паттерне Observer и принципах реактивного программирования. Состояние объявляется как observable, а компоненты автоматически становятся наблюдателями. При изменении данных MobX сам решает, какие части UI нужно обновить. Разработчику не нужно вручную описывать связи между состоянием и представлением.
MobX использует реактивную модель, близкую к spreadsheet-логике.
Определение: Observer pattern — паттерн, при котором объекты автоматически уведомляются об изменениях данных, на которые они подписаны.
Observable
Данные, за которыми ведётся наблюдение
Observer
Компоненты или функции, использующие эти данные
Автоматический трекинг
MobX сам запоминает, какие observables были прочитаны
const store = makeAutoObservable({
count: 0,
inc() {
this.count++;
},
});
count — observable
Компонент, читающий count, становится observer
При изменении count UI обновляется автоматически
Нет явного события (action)
Нет централизованного редьюсера
Связи определяются во время выполнения
Плюсы
Минимум кода
Интуитивная модель
Высокая производительность за счёт точечных обновлений
Минусы
Сложнее отлаживать сложные сценарии
Не всегда очевидно, откуда пришло изменение
MobX основан на Observer + реактивности, что делает его мощным и удобным инструментом, но требует дисциплины, чтобы приложение оставалось понятным и поддерживаемым.