generated from tlibjs/package-template
-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
my_counter.rs
36 lines (31 loc) · 923 Bytes
/
my_counter.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use frender::prelude::*;
def_props! {
#[derive(Debug)]
pub struct MyCounterProps {
pub initial_value?: usize,
}
}
#[component]
pub fn MyCounter(props: &MyCounterProps) {
let (state, state_setter) = react::use_state!(props.initial_value);
let on_increment = {
let state_setter = state_setter.clone();
// clone state_setter so that the cloned value can be moved into the following closure
move || state_setter.set_from_old(|v| **v + 1)
};
let on_decrement = move || state_setter.set_from_old(|v| **v - 1);
let state = *state;
rsx!(
<div>
<button on_click={on_decrement} disabled={state == 0}>
" - "
</button>
" "
{state}
" "
<button on_click={on_increment} disabled={state == usize::MAX}>
" + "
</button>
</div>
)
}