@romaro

Правильно ли я понимаю смысл реакций в MobX?

Выглядит так, что реакции — это что-то вроде триггеров, которые срабатывают после завершения асинхронных экшенов. То есть просто декомпозиция промисов (можно обойтись без реакций и весь асинхронный код прописать в одном экшене). Это правильный подход или они вообще для другого?

import { makeAutoObservable } from 'mobx';

export class LoginFormStore {
    isLoading = false;

    // Login field
    loginFieldValue = '';
    loginFieldTitle = 'Логин';
    loginErrorMessage = '';

    // Password field
    passwordFieldValue = '';
    passwordFieldTitle = 'Пароль';
    passwordErrorMessage = '';

    constructor() {
        makeAutoObservable(this);
    }

    sendFormAction(ev) {
        /**
         * Компонент кнопки рендерится в лоудер
         */
        this.isLoading = true;
        /**
         * Отправляю запрос на сервер. В колбеке промиса вызываю sendFormReaction,
         * передавая в этот метод ответ сервера.
         */
         ...
    }

    sendFormReaction(rs) {
        /**
         * Кнопка снова становится активной
         */
        this.isLoading = false;
        /**
         * Обрабатываю данные, полученные из ответа сервера (например, меняю стейт
         * полей с ошибками, если какие-то данные не прошли валидацию на сервере
         */
         ...
    }
}


Соответствующий раздел справки читал, но пока понял то, что я скорее всего не правильно их толкую.
  • Вопрос задан
  • 91 просмотр
Пригласить эксперта
Ответы на вопрос 1
Alexandroppolus
@Alexandroppolus
кодир
Реакция (в том числе компонент, обернутый в observer из mobx-react) - это функция, которая при первом вызове подписывается на все наблюдаемые/вычисляемые поля и переменные, значение которых она прочитала. При изменении чего-то из этих значений, функция вызовется заново и опять переподпишется, и всё повторится вновь.

Собственно, в "чистом" виде это представлено только базовыми примитивами autorun и observer. А вот reaction и when - хоть и коробочные, но всё же "составные" конструкции, которые ты можешь легко состряпать сам с помощью авторана.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект