PassFront
  1. PassFront
  2. База знаний
  3. Объекты и прототипы

Как глубоко знаешь 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.

Другие вопросы раздела