Предположим, мне нужны данные виджета и данные частей виджета. Мне нужно получить данные виджета через http-запрос, чтобы получить его номера частей. Я использую эти номера деталей, чтобы делать больше HTTP-запросов для получения данных о деталях.
Используя https://github.com/Day8/re-frame-http-fx а>, это будет выглядеть так:
(reg-event-fx
:foo/get-widget
(fn [{:keys [db]} [_]]
{:http-xhrio {:method :get
:uri "foobar.com/widget"
:format (ajax/transit-request-format)
:response-format (ajax/json-response-format)
:on-success [:foo/load-widget]
:on-failure [:foo/set-error]}}))
(reg-event-fx
:foo/get-widget-part
(fn [{:keys [db]} [_ part-number]]
{:http-xhrio {:method :get
:uri (str "foobar.com/part/" part-number)
:format (ajax/transit-request-format)
:response-format (ajax/json-response-format)
:on-success [:foo/load-part]
:on-failure [:foo/set-error]}}))
Как мне инициализировать данные о деталях для моей страницы? Самый простой способ, который я могу придумать, - это обернуть get-widget
и get-widget-part
, написав другой обработчик get-widget-then-widget-parts
, выполнив http-запрос для виджета, и в случае успеха возьмите эти данные и извлеките данные частей. Моя проблема в том, что это не очень компонуемо. Мне нужно создать другой обработчик. В то же время я не могу просто (dispatch [:foo/get-widget])
и передать результат в (dispatch [:foo/get-widget-part])
(насколько я знаю).