@@ -23,34 +23,33 @@ module Counter = {
23
23
24
24
module BacisUsage = {
25
25
type action = Tick | Reset
26
- type state = { elapsed : int }
26
+ type state = {elapsed : int }
27
27
28
28
@react.component
29
29
let make = () => {
30
- let (state , send ) =
31
- ReactUpdate .useReducer ((state , action ) =>
32
- switch (action ) {
33
- | Tick =>
34
- UpdateWithSideEffects (
35
- {elapsed : state .elapsed + 1 },
36
- ({send }) => {
37
- let timeoutId = Js .Global .setTimeout (() => send (Tick ), 1_000 );
38
- Some (() => Js .Global .clearTimeout (timeoutId ));
39
- },
40
- )
41
- | Reset => Update ({elapsed : 0 })
42
- }, {elapsed : 0 }
43
- );
44
- React .useEffect0 (() => {
45
- send (Tick );
46
- None ;
47
- });
48
- <div >
49
- {state .elapsed -> Js .String .make -> React .string }
50
- <button onClick = {_ => send (Reset )}>
51
- {"Reset" -> React .string }
52
- </button >
53
- </div >;
30
+ let (state , send ) = ReactUpdate .useReducerWithMapState (
31
+ (state , action ) =>
32
+ switch action {
33
+ | Tick =>
34
+ UpdateWithSideEffects (
35
+ {elapsed : state .elapsed + 1 },
36
+ ({send }) => {
37
+ let timeoutId = Js .Global .setTimeout (() => send (Tick ), 1_000 )
38
+ Some (() => Js .Global .clearTimeout (timeoutId ))
39
+ },
40
+ )
41
+ | Reset => Update ({elapsed : 0 })
42
+ },
43
+ () => {elapsed : 0 },
44
+ )
45
+ React .useEffect0 (() => {
46
+ send (Tick )
47
+ None
48
+ })
49
+ <div >
50
+ {state .elapsed -> Js .String .make -> React .string }
51
+ <button onClick = {_ => send (Reset )}> {"Reset" -> React .string } </button >
52
+ </div >
54
53
}
55
54
}
56
55
@@ -62,4 +61,4 @@ switch ReactDOM.querySelector("#counter") {
62
61
switch ReactDOM .querySelector ("#basic" ) {
63
62
| Some (root ) => ReactDOM .render (<BacisUsage />, root )
64
63
| None => ()
65
- }
64
+ }
0 commit comments