Как мне обновить страницу по времени в Clojurescript с помощью Reagent?

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

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

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
381
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

(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, во многих случаях мы повторно используем существующие механизмы с хост-платформы, не маскируя их оболочкой (или изобретая заново с помощью нового кода).

Другие вопросы по теме