2017-07-20 15:14:07 +00:00
## The re-frame API
2017-07-23 03:09:38 +00:00
Orientation:
2017-07-23 14:08:59 +00:00
1. The API is provided by [re-frame.core ](/src/re_frame/core.cljc ) which means:
2017-07-23 14:15:36 +00:00
- it will be worth your while to browse this namespace sometime
- to use re-frame, you'll need to `require` it
2. The API is small. Writing an app, you'll be using less than 10 API functions. Maybe just 5.
3. There's no auto-generated docs [because of this problem ](/src/re_frame/core.cljc#L23-L36 ) but
the links below take you to the doc strings of often-used API functions.
2017-07-20 15:01:51 +00:00
2017-07-23 14:08:59 +00:00
## Doc Strings For API Functions
2017-07-20 15:01:51 +00:00
2017-07-23 12:46:46 +00:00
The core API consists of:
2017-07-23 03:09:38 +00:00
- [dispatch ](/src/re_frame/router.cljc#L229-L239 ), [dispatch-sync ](/src/re_frame/router.cljc#L247-L259 ). See also [this FAQ ](/docs/FAQs/When-Does-Dispatch-Happen.md )
2017-07-22 03:27:20 +00:00
- [reg-event-db ](/src/re_frame/core.cljc#L71-L80 ), [reg-event-fx ](/src/re_frame/core.cljc#L87-L97 )
- [reg-sub ](/src/re_frame/subs.cljc#L151-L237 )
- [subscribe ](/src/re_frame/subs.cljc#L67-L83 )
2017-07-23 03:09:38 +00:00
Occasionally, you'll need to use:
2017-07-23 14:08:59 +00:00
- [reg-fx ](/src/re_frame/fx.cljc#L17-L39 )
- [reg-cofx ](/src/re_frame/cofx.cljc#L14-L21 ) and [inject-cofx ](/src/re_frame/cofx.cljc#L22-L73 )
2017-07-20 15:01:51 +00:00
2017-07-23 12:46:46 +00:00
And, finally, there are builtin Interceptors which are useful:
2017-07-23 03:09:38 +00:00
- [path ](/src/re_frame/std_interceptors.cljc#L149-L173 )
2017-07-22 03:27:20 +00:00
- [after ](/src/re_frame/std_interceptors.cljc#L260-L281 )
- [debug ](/src/re_frame/std_interceptors.cljc#L13-L36 )
2017-07-23 14:15:36 +00:00
- [and browse docs for the others ](/src/re_frame/std_interceptors.cljc )
2017-07-20 15:01:51 +00:00
2017-07-23 12:46:46 +00:00
2017-07-23 14:08:59 +00:00
## Built-in Effect Handlers
2017-07-23 12:46:46 +00:00
2017-07-23 14:08:59 +00:00
The following built-in effects are part of the API:
2017-07-23 12:46:46 +00:00
2017-07-23 14:08:59 +00:00
### :dispatch-later
2017-07-23 12:46:46 +00:00
`dispatch` one or more events after given delays. Expects a collection
of maps with two keys: `:ms` and `:dispatch`
usage:
```clj
{:dispatch-later [{:ms 200 :dispatch [:event-id "param"]}
{:ms 100 :dispatch [:also :this :in :100ms]}]}
```
Which means: in 200ms do this: `(dispatch [:event-id "param"])` and in 100ms ...
#### :dispatch
`dispatch` one event. Expects a single vector.
usage:
```clj
{:dispatch [:event-id "param"] }
```
2017-07-23 14:08:59 +00:00
### :dispatch-n
2017-07-23 12:46:46 +00:00
`dispatch` more than one event. Expects a collection events.
usage:
```clj
{:dispatch-n (list [:do :all] [:three :of] [:these])}
```
2017-07-23 14:08:59 +00:00
### :deregister-event-handler
2017-07-23 12:46:46 +00:00
removes a previously registered event handler. Expects either a single id (
typically a keyword), or a seq of ids.
usage:
```clj
{:deregister-event-handler :my-id)}
```
or:
```clj
{:deregister-event-handler [:one-id :another-id]}
```
2017-07-23 14:08:59 +00:00
### :db
2017-07-23 12:46:46 +00:00
reset! app-db with a new value. Expects a map.
usage:
```clj
{:db {:key1 value1 :key2 value2}}
```
2017-07-23 14:08:59 +00:00
***
2017-07-20 15:01:51 +00:00
2017-07-22 03:27:20 +00:00
Previous: [First Code Walk-Through ](CodeWalkthrough.md )
2017-07-20 15:01:51 +00:00
Up: [Index ](README.md )
2017-07-22 03:27:20 +00:00
Next: [Mental Model Omnibus ](MentalModelOmnibus.md )
2017-07-20 15:01:51 +00:00
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE - RUN doctoc TO UPDATE -->
<!-- END doctoc generated TOC please keep comment here to allow auto update -->