mirror of
https://github.com/status-im/reagent.git
synced 2025-02-10 19:07:29 +00:00
commit
d28b16e11d
@ -167,7 +167,7 @@ When reactions produce a new result (as determined by `=`), they cause other dep
|
|||||||
|
|
||||||
The function `make-reaction`, and its macro `reaction` are used to create a `Reaction`, which is a type that belongs to a number of protocols such as `IWatchable`, `IAtom`, `IReactiveAtom`, `IDeref`, `IReset`, `ISwap`, `IRunnable`, etc. which make it atom-like: ie it can be watched, derefed, reset, swapped on, and additionally, tracks its derefs, behave reactively, and so on.
|
The function `make-reaction`, and its macro `reaction` are used to create a `Reaction`, which is a type that belongs to a number of protocols such as `IWatchable`, `IAtom`, `IReactiveAtom`, `IDeref`, `IReset`, `ISwap`, `IRunnable`, etc. which make it atom-like: ie it can be watched, derefed, reset, swapped on, and additionally, tracks its derefs, behave reactively, and so on.
|
||||||
|
|
||||||
Reactions are what give `r/atom`, `r/cursor`, and function `r/cursor` and `r/wrap` their power.
|
Reactions are what give `r/atom`, `r/cursor`, and `r/wrap` their power.
|
||||||
|
|
||||||
`make-reaction` takes one argument, `f`, and an optional options map. The options map specifies what happens to `f`:
|
`make-reaction` takes one argument, `f`, and an optional options map. The options map specifies what happens to `f`:
|
||||||
|
|
||||||
@ -177,7 +177,7 @@ Reactions are what give `r/atom`, `r/cursor`, and function `r/cursor` and `r/wra
|
|||||||
|
|
||||||
Reactions are very useful when
|
Reactions are very useful when
|
||||||
|
|
||||||
* You need a way in which components only updates based on part of the ratom state. (reagent/cursor can also be used for this scenario)
|
* You need a way in which a component only updates based on part of the ratom state. (reagent/cursor can also be used for this scenario)
|
||||||
* When you want to combine two `ratoms` and produce a result
|
* When you want to combine two `ratoms` and produce a result
|
||||||
* You want the component to use some transformed value of `ratom`
|
* You want the component to use some transformed value of `ratom`
|
||||||
|
|
||||||
@ -188,18 +188,19 @@ Here's an example:
|
|||||||
:state-var-2 {:var-a 7
|
:state-var-2 {:var-a 7
|
||||||
:var-b 9}}))
|
:var-b 9}}))
|
||||||
|
|
||||||
(def app-var2-reaction (reagent.ratom/make-reaction
|
(def app-var2a-reaction (reagent.ratom/make-reaction
|
||||||
#(get-in @app-state [:state-var-2 :var-a])))
|
#(get-in @app-state [:state-var-2 :var-a])))
|
||||||
|
|
||||||
|
|
||||||
(defn component-using-make-reaction []
|
(defn component-using-make-reaction []
|
||||||
[:div
|
[:div
|
||||||
[:div "component-using-make-reaction"]
|
[:div "component-using-make-reaction"]
|
||||||
[:div "Sate 2 - var a : " @app-var2-reaction]])
|
[:div "state-var-2 - var-a : " @app-var2a-reaction]])
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
The below example uses `reagent.ratom/reaction` macro, which provides syntactic sugar around creating reaction using `make-reaction`
|
The below example uses `reagent.ratom/reaction` macro, which provides syntactic sugar compared to
|
||||||
|
using plain `make-reaction`:
|
||||||
|
|
||||||
```
|
```
|
||||||
(let [username (reagent/atom "")
|
(let [username (reagent/atom "")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user