Как глубоко знаешь MobX?
Объекты и прототипы
MobX — это библиотека реактивного управления состоянием: observable-данные автоматически отслеживают зависимости через Proxy и обновляют UI при изменении, с минимумом кода.
Концепции
- Observable state — наблюдаемое состояние (за изменениями следит MobX через Proxy).
- Actions — функции, изменяющие состояние.
- Computed — производные значения, кешируются, пересчитываются автоматически.
- Reactions / observer — компоненты-наблюдатели перерисовываются при изменении используемых данных.
import { makeAutoObservable } from 'mobx';
class Store {
count = 0;
constructor() { makeAutoObservable(this); }
increment() { this.count++; } // action
get double() { return this.count * 2; } // computed
}Компонент в observer перерисуется при изменении count.
Под капотом
Proxy (MobX 5+) перехватывает чтение свойств (сбор зависимостей — кто что использует) и запись (запуск реакций при изменении). Это даёт автоматическое отслеживание зависимостей.
Особенности
- Мутабельное состояние (прямое изменение).
- Автоотслеживание зависимостей — MobX сам знает, что от чего зависит.
- Мало кода — нет actions/reducers как в Redux.
- Гранулярные обновления — перерисовывается только то, что использует изменившиеся данные.
MobX против Redux
- MobX — реактивный, мутабельный, мало кода, «магия».
- Redux — явный, иммутабельный, предсказуемый, больше кода, лучше отладка.
Отладка
MobX DevTools, trace() (почему пересчитался), spy() (все события).
Коротко для собеседования
MobX — реактивное управление состоянием: observable-данные (через Proxy отслеживают зависимости), actions (изменения), computed (производные, кешируются), observer-компоненты (авто-перерисовка). Мутабельное состояние, автоотслеживание, мало кода. Под капотом — Proxy (перехват чтения/записи). В отличие от явного иммутабельного Redux.