https://github.com/flexsurfer/re-frame-steroid
A Clojure library with a few functions-steroids for re-frame app
https://github.com/flexsurfer/re-frame-steroid
clojurescript re-frame reagent
Last synced: 13 days ago
JSON representation
A Clojure library with a few functions-steroids for re-frame app
- Host: GitHub
- URL: https://github.com/flexsurfer/re-frame-steroid
- Owner: flexsurfer
- Created: 2020-02-10T13:14:38.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2020-02-10T14:29:26.000Z (about 5 years ago)
- Last Synced: 2024-10-30T00:05:02.061Z (6 months ago)
- Topics: clojurescript, re-frame, reagent
- Language: Clojure
- Homepage:
- Size: 6.84 KB
- Stars: 27
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# re-frame-steroid
A Clojure library with a few functions-steroids for re-frame app
[](https://clojars.org/re-frame-steroid)
## Usage
Views
```clojure
(:require [steroid.views :as views]))(views/defview test-view []
(views/letsubs [subs1 [:subs1]
subs2 [:subs2]]
[text (str subs1 " wut " subs2)]))
``````clojure
(views/defview test-view []
(views/letsubs [subs1 [:subs1]]
{:component-did-mount #(dosmth)}
[text subs1]))
```Events
```clojure
(:require [steroid.fx :as fx])(fx/defn update-count
{:events [:update-count]
:interceptors [(re-frame/inject-cofx :now)]}
[{:keys [db now]}]
{:db (-> db
(update :count inc)
(assoc :now now))})(fx/defn update-label
{:events [:update-label]}
[{:keys [db]} value]
{:db (assoc db :label value)})
```Merge events
```clojure
(fx/defn update-count-and-label
{:events [:update-count-and-label]
:interceptors [(re-frame/inject-cofx :now)]}
[cofx label]
(fx/merge cofx
(update-count)
(update-label label)))
``````clojure
(re-frame/dispatch [:update-count-and-label "label"])
```Global interceptors
```clojure
(def debug-handlers-names
"Interceptor which logs debug information to js/console for each event."
(->interceptor
:id :debug-handlers-names
:before (fn debug-handlers-names-before [context]
(log/debug "Handling re-frame event: " (pretty-print-event context))
context)))(fx/set-default-interceptors [debug-handlers-names])
```Set mergeable keys
```clojure
(fx/set-mergeable-keys #{:key1 :key2})
```Subs
```clojure
(:require [steroid.subs :as subs])(subs/reg-root-subs #{:sub1 :sub2})
(subs/reg-root-sub :sub3)
(subs/reg-root-sub :sub4-name :sub4)
```ENJOY!