rename use_selector to use_memo

This commit is contained in:
Jonathan Kelley committed 2024-01-20 23:32:12 -08:00
1 parent fc0b0f02a1
commit 06d9b575b7
16 files changed
+130 -80

No files matched your search

+1 -1
View File
@@ -25,7 +25,7 @@ const RECT_STYLE: &str = r#"
"#;
fn app() -> Element {
let mut events = use_signal(|| std::collections::VecDeque::new() as VecDeque<Rc<dyn Debug>>);
let mut events = use_signal(|| VecDeque::new() as VecDeque<Rc<dyn Debug>>);
let mut log_event = move |event: Rc<dyn Debug>| {
let mut events = events.write();
+13 -32
View File
@@ -27,7 +27,6 @@ fn app() -> Element {
if val() == "0" {
val.set(String::new());
}
val.write().push_str(num.as_str());
};
@@ -35,15 +34,12 @@ fn app() -> Element {
let mut handle_key_down_event = move |evt: KeyboardEvent| match evt.key() {
Key::Backspace => {
if !val.cloned().is_empty() {
if !val().is_empty() {
val.write().pop();
}
}
Key::Character(character) => match character.as_str() {
"+" => input_operator("+"),
"-" => input_operator("-"),
"/" => input_operator("/"),
"*" => input_operator("*"),
"+" | "-" | "/" | "*" => input_operator(&character),
"0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" => input_digit(character),
_ => {}
},
@@ -72,20 +68,18 @@ fn app() -> Element {
button {
class: "calculator-key key-sign",
onclick: move |_| {
let temp = calc_val(val.cloned().as_str());
if temp > 0.0 {
val.set(format!("-{temp}"));
let new_val = calc_val(val.cloned().as_str());
if new_val > 0.0 {
val.set(format!("-{new_val}"));
} else {
val.set(format!("{}", temp.abs()));
val.set(format!("{}", new_val.abs()));
}
},
"±"
}
button {
class: "calculator-key key-percent",
onclick: move |_| {
val.set(format!("{}", calc_val(val.cloned().as_str()) / 100.0));
},
onclick: move |_| val.set(format!("{}", calc_val(val.cloned().as_str()) / 100.0)),
"%"
}
}
@@ -111,25 +105,12 @@ fn app() -> Element {
}
}
div { class: "operator-keys",
button {
class: "calculator-key key-divide",
onclick: move |_| input_operator("/"),
"÷"
}
button {
class: "calculator-key key-multiply",
onclick: move |_| input_operator("*"),
"×"
}
button {
class: "calculator-key key-subtract",
onclick: move |_| input_operator("-"),
"−"
}
button {
class: "calculator-key key-add",
onclick: move |_| input_operator("+"),
"+"
for (key, class) in [("/", "key-divide"), ("*", "key-multiply"), ("-", "key-subtract"), ("+", "key-add")] {
button {
class: "calculator-key {class}",
onclick: move |_| input_operator(key),
"{key}"
}
}
button {
class: "calculator-key key-equals",
+1 -1
View File
@@ -9,7 +9,7 @@ fn main() {
fn app() -> Element {
let mut counters = use_signal(|| vec![0, 0, 0]);
let sum = use_selector(move || counters.read().iter().copied().sum::<i32>());
let sum = use_memo(move || counters.read().iter().copied().sum::<i32>());
rsx! {
div {
+3 -3
View File
@@ -4,13 +4,13 @@
use dioxus::prelude::*;
static COUNT: GlobalSignal<i32> = Signal::global(|| 0);
static DOUBLED_COUNT: GlobalSelector<i32> = Signal::global_selector(|| COUNT() * 2);
fn main() {
launch(app);
}
static COUNT: GlobalSignal<i32> = Signal::global(|| 0);
static DOUBLED_COUNT: GlobalMemo<i32> = Signal::global_memo(|| COUNT() * 2);
fn app() -> Element {
rsx! {
h1 { "{COUNT} x 2 = {DOUBLED_COUNT}" }
+1 -1
View File
@@ -29,7 +29,7 @@ fn Dice() -> Element {
];
let mut value = use_signal(|| 5);
let active_dots = use_selector(move || &DOTS_FOR_VALUE[(value() - 1) as usize]);
let active_dots = use_memo(move || &DOTS_FOR_VALUE[(value() - 1) as usize]);
rsx! {
svg {
+5 -5
View File
@@ -28,9 +28,9 @@ fn app() -> Element {
let mut filter = use_signal(|| FilterState::All);
let active_todo_count =
use_selector(move || todos.read().values().filter(|item| !item.checked).count());
use_memo(move || todos.read().values().filter(|item| !item.checked).count());
let filtered_todos = use_selector(move || {
let filtered_todos = use_memo(move || {
let mut filtered_todos = todos
.read()
.iter()
@@ -120,8 +120,8 @@ fn TodoHeader(mut todos: Signal<HashMap<u32, TodoItem>>) -> Element {
#[component]
fn TodoEntry(mut todos: Signal<HashMap<u32, TodoItem>>, id: u32) -> Element {
let mut is_editing = use_signal(|| false);
let checked = use_selector(move || todos.read().get(&id).unwrap().checked);
let contents = use_selector(move || todos.read().get(&id).unwrap().contents.clone());
let checked = use_memo(move || todos.read().get(&id).unwrap().checked);
let contents = use_memo(move || todos.read().get(&id).unwrap().contents.clone());
rsx! {
li { class: if checked() { "completed" }, class: if is_editing() { "editing" },
@@ -170,7 +170,7 @@ fn ListFooter(
active_todo_count: ReadOnlySignal<usize>,
mut filter: Signal<FilterState>,
) -> Element {
let show_clear_completed = use_selector(move || todos.read().values().any(|todo| todo.checked));
let show_clear_completed = use_memo(move || todos.read().values().any(|todo| todo.checked));
rsx! {
footer { class: "footer",