Например:
(defn starrating []
(reagent/create-class
{:reagent-render
(fn []
[:div
[:input {:type "checkbox"
:on-click #(do (re-frame/dispatch
[:set-star-rating
(-> % .-target .-checked)])
(get-data-from-server))}]])}))
(defn get-data-from-server []
(let [star (re-frame/subscribe [:star-rating])]
(ajax/GET (str "http://192.168.0.117:8080/json/searchhotels.json"
"?star=" @star)
{:response-format :json
:keywords? true
:handler success-handler
:error-handler error-handler})))
В приведенном выше примере флажок не установлен.
Когда флажок установлен, для переменной звезды устанавливается значение true. Но после этого, когда мы вызываем подписку, чтобы получить значение в звезде, она возвращает предыдущее значение, т.е. ложь
Он вызовет: http://192.168.0.117:8080/json/searchhotels.json?star=false
Когда вы снимаете флажок, запрос становится http://192.168.0.117:8080/json/searchhotels.json?star=true
Почему re-frame.core/subscribe возвращает предыдущее установленное значение?