Unified event system for Clojure/ClojureScript.
Combines:
Design principles:
Usage: (require '[hive.events :as ev])
;; Register effect handlers (ev/reg-fx :http (fn [request] ...)) (ev/reg-fx :db (fn [tx] ...))
;; Register event handlers (ev/reg-event-fx :user/login [ev/debug ev/validate] ; interceptors (fn [{:keys [db]} [_ credentials]] {:db (assoc db :loading? true) :http {:method :post :url "/login" :body credentials}}))
;; Dispatch events (ev/dispatch [:user/login {:email "..." :password "..."}])
Unified event system for Clojure/ClojureScript.
Combines:
- re-frame interceptor chain (portable to JVM)
- re-frame effects/coeffects system
- domino-style declarative models with async support
Design principles:
- Events as data
- Pure handlers returning effect maps
- Interceptors for cross-cutting concerns
- Async-first with core.async
Usage:
(require '[hive.events :as ev])
;; Register effect handlers
(ev/reg-fx :http (fn [request] ...))
(ev/reg-fx :db (fn [tx] ...))
;; Register event handlers
(ev/reg-event-fx :user/login
[ev/debug ev/validate] ; interceptors
(fn [{:keys [db]} [_ credentials]]
{:db (assoc db :loading? true)
:http {:method :post :url "/login" :body credentials}}))
;; Dispatch events
(ev/dispatch [:user/login {:email "..." :password "..."}])cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |