Browse Source

docs: better document the `EventHandler` type

Jonathan Kelley 3 years ago
parent
commit
be9f1a5
1 changed files with 24 additions and 1 deletions
  1. 24 1
      packages/core/src/nodes.rs

+ 24 - 1
packages/core/src/nodes.rs

@@ -324,7 +324,30 @@ type InternalListenerCallback<'bump> = BumpBox<'bump, dyn FnMut(AnyEvent) + 'bum
 
 type ExternalListenerCallback<'bump, T> = BumpBox<'bump, dyn FnMut(T) + 'bump>;
 
-/// The callback based through the `rsx!` macro.
+/// The callback type generated by the `rsx!` macro when an `on` field is specified for components.
+///
+/// This makes it possible to pass `move |evt| {}` style closures into components as property fields.
+///
+/// ```rust
+///
+/// rsx!{
+///     MyComponent { onclick: move |evt| log::info!("clicked"), }
+/// }
+///
+/// #[derive(Props)]
+/// struct MyProps<'a> {
+///     onclick: EventHandler<'a, MouseEvent>,
+/// }
+///
+/// fn MyComponent(cx: Scope<'a, MyProps<'a>>) -> Element {
+///     cx.render(rsx!{
+///         button {
+///             onclick: move |evt| cx.props.onclick.call(evt),
+///         }
+///     })
+/// }
+///
+/// ```
 pub struct EventHandler<'bump, T = ()> {
     pub callback: &'bump RefCell<Option<ExternalListenerCallback<'bump, T>>>,
 }