Fix basic routers

This commit is contained in:
Evan Almloff committed 2024-01-16 14:39:48 -06:00
1 parent 918d09b516
commit b58eb04278
6 files changed
+22 -31

No files matched your search

@@ -1,4 +1,4 @@
use dioxus_lib::prelude::ScopeId;
use dioxus_lib::prelude::*;
use crate::prelude::*;
@@ -11,26 +11,22 @@ 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> {
todo!()
let router = use_hook(|| {
let router = consume_context::<RouterContext>();
// let inner = cx.use_hook(|| {
// let router = cx.consume_context::<RouterContext>()?;
let id = current_scope_id().expect("use_router_internal called outside of a component");
router.subscribe(id);
// let id = cx.scope_id();
// router.subscribe(id);
Some(router)
});
// Some(Subscription { router, id })
// });
// cx.use_hook(|| inner.as_ref().map(|s| s.router.clone()))
}
use_on_destroy(|| {
let router = consume_context::<RouterContext>();
struct Subscription {
router: RouterContext,
id: ScopeId,
}
let id = current_scope_id().expect("use_router_internal called outside of a component");
impl Drop for Subscription {
fn drop(&mut self) {
self.router.unsubscribe(self.id);
}
router.unsubscribe(id);
});
router
}