Przeglądaj źródła

fix use_router_internal

Evan Almloff 1 rok temu
rodzic
commit
adf67b4384
1 zmienionych plików z 11 dodań i 14 usunięć
  1. 11 14
      packages/router/src/utils/use_router_internal.rs

+ 11 - 14
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<RouterContext> {
-    let router = use_hook(|| {
-        let router = consume_context::<RouterContext>();
-
+    let router = use_hook(consume_context::<RouterContext>);
+    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::<RouterContext>();
-
-        let id = current_scope_id().expect("use_router_internal called outside of a component");
-
-        router.unsubscribe(id);
-    });
-
-    router
+    })
 }