fix: component pass thru events
This commit is contained in:
1 parent
b49928a4ac
commit
c439b0ac7e
7 files changed
+37
-31
No files matched your search
@@ -41,22 +41,22 @@ fn app(cx: Scope) -> Element {
|
||||
div { class: "col-md-6",
|
||||
div { class: "row",
|
||||
ActionButton { name: "Create 1,000 rows", id: "run",
|
||||
onclick: move || items.set(Label::new_list(1_000)),
|
||||
onclick: move |_| items.set(Label::new_list(1_000)),
|
||||
}
|
||||
ActionButton { name: "Create 10,000 rows", id: "runlots",
|
||||
onclick: move || items.set(Label::new_list(10_000)),
|
||||
onclick: move |_| items.set(Label::new_list(10_000)),
|
||||
}
|
||||
ActionButton { name: "Append 1,000 rows", id: "add",
|
||||
onclick: move || items.write().extend(Label::new_list(1_000)),
|
||||
onclick: move |_| items.write().extend(Label::new_list(1_000)),
|
||||
}
|
||||
ActionButton { name: "Update every 10th row", id: "update",
|
||||
onclick: move || items.write().iter_mut().step_by(10).for_each(|item| item.labels[2] = "!!!"),
|
||||
onclick: move |_| items.write().iter_mut().step_by(10).for_each(|item| item.labels[2] = "!!!"),
|
||||
}
|
||||
ActionButton { name: "Clear", id: "clear",
|
||||
onclick: move || items.write().clear(),
|
||||
onclick: move |_| items.write().clear(),
|
||||
}
|
||||
ActionButton { name: "Swap rows", id: "swaprows",
|
||||
onclick: move || items.write().swap(0, 998),
|
||||
onclick: move |_| items.write().swap(0, 998),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -91,7 +91,7 @@ fn app(cx: Scope) -> Element {
|
||||
struct ActionButtonProps<'a> {
|
||||
name: &'a str,
|
||||
id: &'a str,
|
||||
onclick: &'a dyn Fn(),
|
||||
onclick: EventHandler<'a, ()>,
|
||||
}
|
||||
|
||||
fn ActionButton<'a>(cx: Scope<'a, ActionButtonProps<'a>>) -> Element {
|
||||
@@ -102,7 +102,7 @@ fn ActionButton<'a>(cx: Scope<'a, ActionButtonProps<'a>>) -> Element {
|
||||
class:"btn btn-primary btn-block",
|
||||
r#type: "button",
|
||||
id: "{cx.props.id}",
|
||||
onclick: move |_| (cx.props.onclick)(),
|
||||
onclick: move |_| cx.props.onclick.call(()),
|
||||
|
||||
"{cx.props.name}"
|
||||
}
|
||||
|
||||
@@ -15,8 +15,6 @@
|
||||
//! the RefCell will panic and crash. You can use `try_get_mut` or `.modify` to avoid this problem, or just not hold two
|
||||
//! RefMuts at the same time.
|
||||
|
||||
use std::sync::Arc;
|
||||
|
||||
use dioxus::desktop::wry::application::dpi::LogicalSize;
|
||||
use dioxus::events::*;
|
||||
use dioxus::prelude::*;
|
||||
@@ -117,7 +115,7 @@ fn app(cx: Scope) -> Element {
|
||||
#[derive(Props)]
|
||||
struct CalculatorKeyProps<'a> {
|
||||
name: &'a str,
|
||||
onclick: &'a dyn Fn(MouseEvent),
|
||||
onclick: EventHandler<'a, MouseEvent>,
|
||||
children: Element<'a>,
|
||||
}
|
||||
|
||||
@@ -125,7 +123,7 @@ fn CalculatorKey<'a>(cx: Scope<'a, CalculatorKeyProps<'a>>) -> Element {
|
||||
cx.render(rsx! {
|
||||
button {
|
||||
class: "calculator-key {cx.props.name}",
|
||||
onclick: move |e| (cx.props.onclick)(e),
|
||||
onclick: move |e| cx.props.onclick.call(e),
|
||||
&cx.props.children
|
||||
}
|
||||
})
|
||||
|
||||
Reference in new issue
Block a user