例えば:
(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})))
上記の例では、チェックボックスは設定されていません。
チェックボックスをオンにすると、star 変数が true に設定されます。しかし、この後、subscribe を呼び出して star の値を取得すると、以前の値、つまり false が返されます。
呼び出します: 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 が以前の設定値を返すのはなぜですか?