Назад к вопросам

Ответ от нейросети

sobes.tech AI

MobX — это библиотека для управления состоянием приложения. В основе MobX лежат три концепции:

  • Состояние (State): данные, которые составляют состояние приложения. Объявляется как observable (наблюдаемое).

    // observable state
    import { observable } from "mobx";
    
    const appState = observable({
        count: 0
    });
    
  • Производные данные (Derivations): данные, которые вычисляются на основе состояния. Автоматически обновляются при изменении состояния. Объявляются как computed (вычисляемые).

    // computed derivation
    import { observable, computed } from "mobx";
    
    const appState = observable({
        count: 0
    });
    
    const squaredCount = computed(() => appState.count * appState.count);
    
  • Действия (Actions): функции, которые изменяют состояние. Рекомендуется использовать для явного мутирования состояния. Объявляются как action.

    // action to modify state
    import { observable, action } from "mobx";
    
    const appState = observable({
        count: 0
    });
    
    const increment = action(() => {
        appState.count++;
    });
    

MobX использует реактивную парадигму, автоматически отслеживая зависимости. При изменении наблюдаемого состояния, все зависящие производные данные и реакции (такие как рендеринг UI) автоматически обновляются.

Преимущества MobX:

  • Простота: Минималистичный API, легко начать использовать.
  • Производительность: Автоматическое отслеживание зависимостей минимизирует лишние перерисовки и вычисления.
  • Гибкость: Хорошо интегрируется с различными UI-фреймворками (React, Vue, Angular).

Основные декораторы/утилиты в MobX:

Название Назначение
observable Определяет наблюдаемое состояние.
computed Определяет вычисляемые производные данные.
action Определяет действие, которое мутирует состояние.
autorun Создает реакцию, автоматически выполняющуюся при изменении наблюдаемых данных внутри нее.
reaction Создает реакцию с явным определением зависимостей и эффекта.
when Создает реакцию, которая выполняется один раз при выполнении определенного условия.

Интеграция с React обычно происходит с помощью пакета mobx-react или mobx-react-lite, используя хуки (useObserver, useLocalStore) или компоненты-обертки (observer).

// Basic React + MobX integration
import React from "react";
import { useObserver } from "mobx-react-lite";
import { observable, action } from "mobx";

const appState = observable({
    count: 0
});

const increment = action(() => {
    appState.count++;
});

function Counter() {
    return useObserver(() => (
        <div>
            Count: {appState.count}
            <button onClick={increment}>Increment</button>
        </div>
    ));
}

MobX подходит для приложений любого размера, от небольших виджетов до крупномасштабных энтерпрайз-решений.