@webe
frontend

Где выполнять запросы к серверу в MobX?

Помогите плиз разобраться, я раньше работал с редаксом, сейчас поставил MobX.

Возник ряд вопросов вопрос
1) если я хочу выполнить Ajax запрос мне просто нужно создать @actionвнутри моего стора и там вызывать fetch, как конфигурировать синхронный экшен и асинхронный? Нужно исопльзовать runInAction ?
2) как быть с isLoading полями, как их правильно организовать, писать вручную или есть какой-нибудь общепринятый подход внутри mobx?
3) Как получить доступ внутри экшена одного стора в данные другого стора?
  • Вопрос задан
  • 332 просмотра
Пригласить эксперта
Ответы на вопрос 1
Разделяй models и api
Делай отдельно папку api и функции там с запросами к серверу, получениями ответа
Делай отдельно папку
-lib
  | -  helpers
  | -  utils


И вот в helper или utils уже объединяй все это, пример:

Функция из helpers/fetchUsers.ts
const fetchUsers = async () => {
      setLoading(true) // mobx
      try {
          const response = await fetchUsers() // api
          setusers(response) // mobx
      } catch(e) {
          setError(e.message) // mobx
      } finally {
          setLoading(false) // mobx
      }
  }


И потом вызываешь эту функцию

это разделение делается для того, что бы не было никаких зависимостей
API - это API
MODELS - это MODELS

Не нужно мешать это
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы