Как должен выглядеть приказ об отправке:
;; Initial Data
(dispatch [:http/get-bar])
;; We click something to update foo
(dispatch [:http/update-foo])
;; :success handler gets run:
(dispatch [:http-success/update-foo])
;; Foo data influences bar data, we want to get-bar again after foo updates
(dispatch [:http/get-bar])
Если у нас есть что-то вроде этого:
{:on-click
(fn []
(dispatch [:http/update-foo])
(dispatch [:http/get-bar]))}
Порядок действительно будет выглядеть так:
[[:http/get-bar]
[:http/update-foo]
[:http/get-bar]
[:http-success/update-foo]]
Мы не можем гарантировать успешное обновление, пока снова не получим полосу. Можно отправить :http/get-bar
как часть :http-success/update-foo
, но жесткое кодирование делает вещи менее гибкими. В моем конкретном случае использования у меня есть модальный компонент, который используется на двух разных страницах. При нажатии кнопки «Сохранить» обе страницы отправляются на [:http/update-foo]
, но за одной страницей последует [:http/get-bar]
, а за другой — [:http/get-baz]
, обе из которых нуждаются в foo
для завершения обновления в первую очередь.