Как мне обновить синхронизацию страниц в Clojurescript с помощью Reagent? - PullRequest
0 голосов
/ 15 октября 2018

Я пишу Clojurescript SPA, который должен регулярно (может быть, каждые 30 секунд, может быть, раз в минуту) опрашивать сервер и получать некоторые обновленные данные.

Как мне это сделать в Clojurescript с Reagent(платформа React)?

Я просто использую низкоуровневый метод setTimeout () Javascript или есть более идиоматический способ сделать это в Clojurescript / React?

1 Ответ

0 голосов
/ 15 октября 2018

Примеры реагентов хорошо показывают это:

(ns simpleexample.core
  (:require [reagent.core :as r]))

(defonce timer (r/atom (js/Date.)))

(defonce time-color (r/atom "#f34"))

(defonce time-updater (js/setInterval
                       #(reset! timer (js/Date.)) 1000))

Первый пример в документах для перефразирования похож:

;; -- Domino 1 - Event Dispatch -----------------------------------------------

(defn dispatch-timer-event
  []
  (let [now (js/Date.)]
    (rf/dispatch [:timer now])))  ;; <-- dispatch used

;; Call the dispatching function every second.
;; `defonce` is like `def` but it ensures only one instance is ever
;; created in the face of figwheel hot-reloading of this file.
(defonce do-timer (js/setInterval dispatch-timer-event 1000))

Как и в случае с Clojure, во многих случаях мы повторно используем существующее оборудование с платформы хоста, не маскируя его оболочкой (или не изобретая его новым кодом).

...