From 7ec82c8df352c5e3485d616b88c9308ff7e00cbd Mon Sep 17 00:00:00 2001 From: Jose Quesada Date: Sat, 31 Dec 2022 09:54:13 -0600 Subject: [PATCH 1/2] boxing `View::on` closure to fix compiler recursion error --- leptos_dom/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/leptos_dom/src/lib.rs b/leptos_dom/src/lib.rs index 5f07506de..b42bc5722 100644 --- a/leptos_dom/src/lib.rs +++ b/leptos_dom/src/lib.rs @@ -543,7 +543,7 @@ impl View { pub fn on( self, event: E, - event_handler: impl FnMut(E::EventType) + 'static, + event_handler: Box, ) -> Self { cfg_if! { if #[cfg(all(target_arch = "wasm32", feature = "web"))] { @@ -565,7 +565,7 @@ impl View { c.children.iter().cloned().for_each(|c| { let event_handler = event_handler.clone(); - c.on(event.clone(), move |e| event_handler.borrow_mut()(e)); + c.on(event.clone(), Box::new(move |e| event_handler.borrow_mut()(e))); }); } Self::CoreComponent(c) => match c { From 60e2f34456cdb15004e65a2db07772e87bae00fc Mon Sep 17 00:00:00 2001 From: Jose Quesada Date: Sat, 31 Dec 2022 09:59:48 -0600 Subject: [PATCH 2/2] changed `View::on` to not require manually boxing the closure --- leptos_dom/src/lib.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/leptos_dom/src/lib.rs b/leptos_dom/src/lib.rs index b42bc5722..e9d20f77e 100644 --- a/leptos_dom/src/lib.rs +++ b/leptos_dom/src/lib.rs @@ -541,6 +541,14 @@ impl View { /// This method will attach an event listener to **all** child /// [`HtmlElement`] children. pub fn on( + self, + event: E, + event_handler: impl FnMut(E::EventType) + 'static, + ) -> Self { + self.on_impl(event, Box::new(event_handler)) + } + + fn on_impl( self, event: E, event_handler: Box,