From adf67b4384afa74a707eefb9d462160b9a90e4c3 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Tue, 16 Jan 2024 16:23:38 -0600 Subject: [PATCH] fix use_router_internal --- .../router/src/utils/use_router_internal.rs | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/packages/router/src/utils/use_router_internal.rs b/packages/router/src/utils/use_router_internal.rs index 980879b31..55997c304 100644 --- a/packages/router/src/utils/use_router_internal.rs +++ b/packages/router/src/utils/use_router_internal.rs @@ -11,22 +11,19 @@ use crate::prelude::*; /// - [`None`], when the current component isn't a descendant of a [`Link`] component. /// - Otherwise [`Some`]. pub(crate) fn use_router_internal() -> Option { - let router = use_hook(|| { - let router = consume_context::(); + let router = use_hook(consume_context::); + use_on_destroy({ + to_owned![router]; + move || { + let id = current_scope_id().expect("use_router_internal called outside of a component"); + router.unsubscribe(id); + } + }); + use_hook(move || { let id = current_scope_id().expect("use_router_internal called outside of a component"); router.subscribe(id); Some(router) - }); - - use_on_destroy(|| { - let router = consume_context::(); - - let id = current_scope_id().expect("use_router_internal called outside of a component"); - - router.unsubscribe(id); - }); - - router + }) }