假设我需要小部件数据和小部件部件数据。我需要通过 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])
(据我所知)。