Skip to content

Commit 6c3f519

Browse files
committed
feat: re-unify set_state
1 parent 3928856 commit 6c3f519

File tree

16 files changed

+199
-136
lines changed

16 files changed

+199
-136
lines changed

examples/calculator.rs

Lines changed: 24 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,16 @@ fn main() {
1818
}
1919

2020
fn app(cx: Scope) -> Element {
21-
let (display_value, set_display_value) = use_state(&cx, || String::from("0"));
21+
let val = use_state(&cx, || String::from("0"));
2222

2323
let input_digit = move |num: u8| {
24-
if display_value == "0" {
25-
set_display_value(String::new());
24+
if val.get() == "0" {
25+
val.set(String::new());
2626
}
27-
set_display_value
28-
.make_mut()
29-
.push_str(num.to_string().as_str());
27+
val.make_mut().push_str(num.to_string().as_str());
3028
};
3129

32-
let input_operator = move |key: &str| {
33-
set_display_value.make_mut().push_str(key);
34-
};
30+
let input_operator = move |key: &str| val.make_mut().push_str(key);
3531

3632
cx.render(rsx!(
3733
style { [include_str!("./assets/calculator.css")] }
@@ -54,43 +50,43 @@ fn app(cx: Scope) -> Element {
5450
KeyCode::Num8 => input_digit(8),
5551
KeyCode::Num9 => input_digit(9),
5652
KeyCode::Backspace => {
57-
if !display_value.len() != 0 {
58-
set_display_value.make_mut().pop();
53+
if !val.len() != 0 {
54+
val.make_mut().pop();
5955
}
6056
}
6157
_ => {}
6258
},
63-
div { class: "calculator-display", [display_value.to_string()] }
59+
div { class: "calculator-display", [val.to_string()] }
6460
div { class: "calculator-keypad",
6561
div { class: "input-keys",
6662
div { class: "function-keys",
6763
button {
6864
class: "calculator-key key-clear",
6965
onclick: move |_| {
70-
set_display_value(String::new());
71-
if !display_value.is_empty(){
72-
set_display_value("0".into());
66+
val.set(String::new());
67+
if !val.is_empty(){
68+
val.set("0".into());
7369
}
7470
},
75-
[if display_value.is_empty() { "C" } else { "AC" }]
71+
[if val.is_empty() { "C" } else { "AC" }]
7672
}
7773
button {
7874
class: "calculator-key key-sign",
7975
onclick: move |_| {
80-
let temp = calc_val(display_value.clone());
76+
let temp = calc_val(val.as_str());
8177
if temp > 0.0 {
82-
set_display_value(format!("-{}", temp));
78+
val.set(format!("-{}", temp));
8379
} else {
84-
set_display_value(format!("{}", temp.abs()));
80+
val.set(format!("{}", temp.abs()));
8581
}
8682
},
8783
"±"
8884
}
8985
button {
9086
class: "calculator-key key-percent",
9187
onclick: move |_| {
92-
set_display_value(
93-
format!("{}", calc_val(display_value.clone()) / 100.0)
88+
val.set(
89+
format!("{}", calc_val(val.as_str()) / 100.0)
9490
);
9591
},
9692
"%"
@@ -100,7 +96,7 @@ fn app(cx: Scope) -> Element {
10096
button { class: "calculator-key key-0", onclick: move |_| input_digit(0),
10197
"0"
10298
}
103-
button { class: "calculator-key key-dot", onclick: move |_| set_display_value.make_mut().push('.'),
99+
button { class: "calculator-key key-dot", onclick: move |_| val.make_mut().push('.'),
104100
"●"
105101
}
106102
(1..10).map(|k| rsx!{
@@ -114,25 +110,21 @@ fn app(cx: Scope) -> Element {
114110
}
115111
}
116112
div { class: "operator-keys",
117-
button { class: "calculator-key key-divide",
118-
onclick: move |_| input_operator("/"),
113+
button { class: "calculator-key key-divide", onclick: move |_| input_operator("/"),
119114
"÷"
120115
}
121-
button { class: "calculator-key key-multiply",
122-
onclick: move |_| input_operator("*"),
116+
button { class: "calculator-key key-multiply", onclick: move |_| input_operator("*"),
123117
"×"
124118
}
125-
button { class: "calculator-key key-subtract",
126-
onclick: move |_| input_operator("-"),
119+
button { class: "calculator-key key-subtract", onclick: move |_| input_operator("-"),
127120
"−"
128121
}
129-
button { class: "calculator-key key-add",
130-
onclick: move |_| input_operator("+"),
122+
button { class: "calculator-key key-add", onclick: move |_| input_operator("+"),
131123
"+"
132124
}
133125
button { class: "calculator-key key-equals",
134126
onclick: move |_| {
135-
set_display_value(format!("{}", calc_val(display_value.clone())));
127+
val.set(format!("{}", calc_val(val.as_str())));
136128
},
137129
"="
138130
}
@@ -145,7 +137,7 @@ fn app(cx: Scope) -> Element {
145137
))
146138
}
147139

148-
fn calc_val(val: String) -> f64 {
140+
fn calc_val(val: &str) -> f64 {
149141
let mut temp = String::new();
150142
let mut operation = "+".to_string();
151143

examples/crm.rs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ pub struct Client {
2121

2222
fn app(cx: Scope) -> Element {
2323
let clients = use_ref(&cx, || vec![] as Vec<Client>);
24-
let (scene, set_scene) = use_state(&cx, || Scene::ClientsList);
25-
let (firstname, set_firstname) = use_state(&cx, String::new);
26-
let (lastname, set_lastname) = use_state(&cx, String::new);
27-
let (description, set_description) = use_state(&cx, String::new);
24+
let scene = use_state(&cx, || Scene::ClientsList);
25+
let firstname = use_state(&cx, String::new);
26+
let lastname = use_state(&cx, String::new);
27+
let description = use_state(&cx, String::new);
2828

2929
cx.render(rsx!(
3030
body {
@@ -38,7 +38,7 @@ fn app(cx: Scope) -> Element {
3838

3939
h1 {"Dioxus CRM Example"}
4040

41-
match scene {
41+
match scene.get() {
4242
Scene::ClientsList => rsx!(
4343
div { class: "crm",
4444
h2 { margin_bottom: "10px", "List of clients" }
@@ -51,8 +51,8 @@ fn app(cx: Scope) -> Element {
5151
})
5252
)
5353
}
54-
button { class: "pure-button pure-button-primary", onclick: move |_| set_scene(Scene::NewClientForm), "Add New" }
55-
button { class: "pure-button", onclick: move |_| set_scene(Scene::Settings), "Settings" }
54+
button { class: "pure-button pure-button-primary", onclick: move |_| scene.set(Scene::NewClientForm), "Add New" }
55+
button { class: "pure-button", onclick: move |_| scene.set(Scene::Settings), "Settings" }
5656
}
5757
),
5858
Scene::NewClientForm => rsx!(
@@ -63,36 +63,36 @@ fn app(cx: Scope) -> Element {
6363
class: "new-client firstname",
6464
placeholder: "First name",
6565
value: "{firstname}",
66-
oninput: move |e| set_firstname(e.value.clone())
66+
oninput: move |e| firstname.set(e.value.clone())
6767
}
6868
input {
6969
class: "new-client lastname",
7070
placeholder: "Last name",
7171
value: "{lastname}",
72-
oninput: move |e| set_lastname(e.value.clone())
72+
oninput: move |e| lastname.set(e.value.clone())
7373
}
7474
textarea {
7575
class: "new-client description",
7676
placeholder: "Description",
7777
value: "{description}",
78-
oninput: move |e| set_description(e.value.clone())
78+
oninput: move |e| description.set(e.value.clone())
7979
}
8080
}
8181
button {
8282
class: "pure-button pure-button-primary",
8383
onclick: move |_| {
8484
clients.write().push(Client {
85-
description: (*description).clone(),
86-
first_name: (*firstname).clone(),
87-
last_name: (*lastname).clone(),
85+
description: (**description).clone(),
86+
first_name: (**firstname).clone(),
87+
last_name: (**lastname).clone(),
8888
});
89-
set_description(String::new());
90-
set_firstname(String::new());
91-
set_lastname(String::new());
89+
description.set(String::new());
90+
firstname.set(String::new());
91+
lastname.set(String::new());
9292
},
9393
"Add New"
9494
}
95-
button { class: "pure-button", onclick: move |_| set_scene(Scene::ClientsList),
95+
button { class: "pure-button", onclick: move |_| scene.set(Scene::ClientsList),
9696
"Go Back"
9797
}
9898
}
@@ -108,7 +108,7 @@ fn app(cx: Scope) -> Element {
108108
}
109109
button {
110110
class: "pure-button pure-button-primary",
111-
onclick: move |_| set_scene(Scene::ClientsList),
111+
onclick: move |_| scene.set(Scene::ClientsList),
112112
"Go Back"
113113
}
114114
}

examples/disabled.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@ fn main() {
55
}
66

77
fn app(cx: Scope) -> Element {
8-
let (disabled, set_disabled) = use_state(&cx, || false);
8+
let disabled = use_state(&cx, || false);
99

1010
cx.render(rsx! {
1111
div {
1212
button {
13-
onclick: move |_| set_disabled(!disabled),
14-
"click to " [if *disabled {"enable"} else {"disable"} ] " the lower button"
13+
onclick: move |_| disabled.set(!disabled),
14+
"click to "
15+
[if disabled == true {"enable"} else {"disable"}]
16+
" the lower button"
1517
}
1618

1719
button {

examples/dog_app.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ struct ListBreeds {
1616
}
1717

1818
fn app(cx: Scope) -> Element {
19-
let (breed, set_breed) = use_state(&cx, || None);
19+
let breed = use_state(&cx, || None);
2020

2121
let breeds = use_future(&cx, (), |_| async move {
2222
reqwest::get("https://dog.ceo/api/breeds/list/all")
@@ -32,17 +32,17 @@ fn app(cx: Scope) -> Element {
3232
h1 { "Select a dog breed!" }
3333
div { display: "flex",
3434
ul { flex: "50%",
35-
breeds.message.keys().map(|breed| rsx!(
35+
breeds.message.keys().map(|cur_breed| rsx!(
3636
li {
3737
button {
38-
onclick: move |_| set_breed(Some(breed.clone())),
39-
"{breed}"
38+
onclick: move |_| breed.set(Some(cur_breed.clone())),
39+
"{cur_breed}"
4040
}
4141
}
4242
))
4343
}
4444
div { flex: "50%",
45-
match breed {
45+
match breed.get() {
4646
Some(breed) => rsx!( Breed { breed: breed.clone() } ),
4747
None => rsx!("No Breed selected"),
4848
}

examples/framework_benchmark.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ impl Label {
3333

3434
fn app(cx: Scope) -> Element {
3535
let items = use_ref(&cx, Vec::new);
36-
let (selected, set_selected) = use_state(&cx, || None);
36+
let selected = use_state(&cx, || None);
3737

3838
cx.render(rsx! {
3939
div { class: "container",
@@ -71,7 +71,7 @@ fn app(cx: Scope) -> Element {
7171
rsx!(tr { class: "{is_in_danger}",
7272
td { class:"col-md-1" }
7373
td { class:"col-md-1", "{item.key}" }
74-
td { class:"col-md-1", onclick: move |_| set_selected(Some(id)),
74+
td { class:"col-md-1", onclick: move |_| selected.set(Some(id)),
7575
a { class: "lbl", item.labels }
7676
}
7777
td { class: "col-md-1",

examples/hydration.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ fn main() {
2020
}
2121

2222
fn app(cx: Scope) -> Element {
23-
let (val, set_val) = use_state(&cx, || 0);
23+
let val = use_state(&cx, || 0);
2424

2525
cx.render(rsx! {
2626
div {
2727
h1 { "hello world. Count: {val}" }
2828
button {
29-
onclick: move |_| set_val(val + 1),
29+
onclick: move |_| *val.make_mut() += 1,
3030
"click to increment"
3131
}
3232
}

examples/pattern_reducer.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,16 @@ fn main() {
1515
}
1616

1717
fn app(cx: Scope) -> Element {
18-
let (state, set_state) = use_state(&cx, PlayerState::new);
18+
let state = use_state(&cx, PlayerState::new);
1919

2020
cx.render(rsx!(
2121
div {
2222
h1 {"Select an option"}
2323
h3 { "The radio is... " [state.is_playing()] "!" }
24-
button { onclick: move |_| set_state.make_mut().reduce(PlayerAction::Pause),
24+
button { onclick: move |_| state.make_mut().reduce(PlayerAction::Pause),
2525
"Pause"
2626
}
27-
button { onclick: move |_| set_state.make_mut().reduce(PlayerAction::Play),
27+
button { onclick: move |_| state.make_mut().reduce(PlayerAction::Play),
2828
"Play"
2929
}
3030
}

examples/readme.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ fn main() {
99
}
1010

1111
fn app(cx: Scope) -> Element {
12-
let (count, set_count) = use_state(&cx, || 0);
12+
let count = use_state(&cx, || 0);
1313

1414
cx.render(rsx! {
1515
div {
1616
h1 { "High-Five counter: {count}" }
17-
button { onclick: move |_| set_count(count + 1), "Up high!" }
18-
button { onclick: move |_| set_count(count - 1), "Down low!" }
17+
button { onclick: move |_| *count.make_mut() += 1, "Up high!" }
18+
button { onclick: move |_| *count.make_mut() -= 1, "Down low!" }
1919
}
2020
})
2121
}

examples/rsx_compile_fail.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ fn main() {
1212
}
1313

1414
fn example(cx: Scope) -> Element {
15-
let (items, _set_items) = use_state(&cx, || {
15+
let items = use_state(&cx, || {
1616
vec![Thing {
1717
a: "asd".to_string(),
1818
b: 10,

examples/svg.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ fn main() {
77
}
88

99
fn app(cx: Scope) -> Element {
10-
let (val, set_val) = use_state(&cx, || 5);
10+
let val = use_state(&cx, || 5);
1111

1212
cx.render(rsx! {
1313
div {
@@ -21,12 +21,12 @@ fn app(cx: Scope) -> Element {
2121
height: "80%",
2222
width: "80%",
2323
Die {
24-
value: *val,
24+
value: **val,
2525
keep: true,
2626
onclick: move |_| {
2727
use rand::Rng;
2828
let mut rng = rand::thread_rng();
29-
set_val(rng.gen_range(1..6));
29+
val.set(rng.gen_range(1..6));
3030
}
3131
}
3232
}

0 commit comments

Comments
 (0)