React — процесс аутентификации: невозможно отправить в середине отправки

Я начал играть с реакцией через flummox, react-bootstrap и react-router. Я пытаюсь создать базовую изоморфную CMS для своих сайтов.

Контекст:

Что касается аутентификации, у каждого пользователя есть список возможностей, и каждый компонент использует метод моего хранилища аутентификации, который «может» отображаться или нет, и т. д.

У меня есть пользовательская навигационная панель вверху, видимая на каждой странице, обрабатываемой reat-router, с кнопкой входа/выхода, которая в основном отображается при нажатии модального окна с формой входа, если пользователь не вошел в систему, иначе подтверждение выхода.

Когда пользователь входит в систему, я хочу, чтобы компоненты на отображаемой в данный момент странице обновлялись (то же самое для выхода из системы).

Вот пример со страницей, которая отображает список, который может просматривать только аутентифицированный пользователь с соответствующими правами:

Процесс:

  1. Когда пользователь отправляет форму, я вызываю действие
  2. Действие отправляет запрос на сервер
  3. Действие регистрируется хранилищем аутентификации, которое обновляет его currentUser.
  4. Компонент имеет свойство currentUser и использует componentWillReceiveProps, чтобы проверить, изменилось ли это свойство, и вызвать действие для запроса списка.
  5. действие регистрируется магазином, который обновляет свои товары

Проблема: не удается отправить в середине отправки

Взлом: второе действие помещается в setTimeout.

Вопросы. Я читал много ответов об этой конкретной проблеме, и говорят, что вызов двух действий в одном и том же цикле диспетчера является плохой схемой. Итак, мой вопрос: есть ли лучший способ спроектировать этот процесс?

P.S. : Я могу опубликовать код, если это необходимо.


person Gregory Bouteiller    schedule 10.06.2015    source источник
comment
Либо подождите, пока Магазин обновится, а затем запустите новые действия, либо раздайте обещания своим магазинам, которые вы можете .then() активировать.   -  person Henrik Andersson    schedule 10.06.2015
comment
Публикация кода может быть полезной :)   -  person Markus-ipse    schedule 13.06.2015