1

例えば:

(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 が以前の設定値を返すのはなぜですか?

4

2 に答える 2