diff --git a/packages/router/src/components/history_buttons.rs b/packages/router/src/components/history_buttons.rs index 2475ecbad..5b9fe25c4 100644 --- a/packages/router/src/components/history_buttons.rs +++ b/packages/router/src/components/history_buttons.rs @@ -64,7 +64,7 @@ pub fn GoBackButton<'a>(cx: Scope<'a, HistoryButtonProps<'a>>) -> Element { error!("{msg}, will be inactive"); #[cfg(debug_assertions)] panic!("{}", msg); - anyhow::bail!("{msg}"); + return None; } }; let state = loop { @@ -139,7 +139,7 @@ pub fn GoForwardButton<'a>(cx: Scope<'a, HistoryButtonProps<'a>>) -> Element { error!("{msg}, will be inactive"); #[cfg(debug_assertions)] panic!("{}", msg); - anyhow::bail!("{msg}"); + return None; } }; let state = loop { diff --git a/packages/router/src/components/link.rs b/packages/router/src/components/link.rs index 2b4a0faf6..193dfa7a3 100644 --- a/packages/router/src/components/link.rs +++ b/packages/router/src/components/link.rs @@ -122,7 +122,7 @@ pub fn Link<'a>(cx: Scope<'a, LinkProps<'a>>) -> Element { error!("{msg}, will be inactive"); #[cfg(debug_assertions)] panic!("{}", msg); - anyhow::bail!("{msg}"); + return None; } }; let state = loop { diff --git a/packages/router/src/components/outlet.rs b/packages/router/src/components/outlet.rs index c1fcd3b5f..b710b7c01 100644 --- a/packages/router/src/components/outlet.rs +++ b/packages/router/src/components/outlet.rs @@ -77,7 +77,7 @@ pub fn Outlet(cx: Scope) -> Element { error!("{msg}, will be inactive"); #[cfg(debug_assertions)] panic!("{}", msg); - anyhow::bail!("{msg}"); + return None; } }; let state = loop { diff --git a/packages/router/src/error.rs b/packages/router/src/error.rs deleted file mode 100644 index 294e68b99..000000000 --- a/packages/router/src/error.rs +++ /dev/null @@ -1,8 +0,0 @@ -/// Errors that may occur during routing. -#[derive(Debug, thiserror::Error)] -pub enum RouterError { - /// A hook that needs access to a router was called inside a component, that has no parent - /// calling the [`use_router`](crate::hooks::use_router) hook. - #[error("component needing access not inside router")] - NotInsideRouter, -} diff --git a/packages/router/src/hooks/use_navigate.rs b/packages/router/src/hooks/use_navigate.rs index df2c95301..1920a99fd 100644 --- a/packages/router/src/hooks/use_navigate.rs +++ b/packages/router/src/hooks/use_navigate.rs @@ -1,7 +1,7 @@ use dioxus::prelude::{ScopeId, ScopeState}; use dioxus_router_core::Navigator; -use crate::{utils::use_router_internal::use_router_internal, RouterError}; +use crate::{utils::use_router_internal::use_router_internal}; /// A hook that allows for programmatic navigation. /// @@ -58,14 +58,14 @@ use crate::{utils::use_router_internal::use_router_internal, RouterError}; /// # let _ = vdom.rebuild(); /// # assert_eq!(dioxus_ssr::render(&vdom), "

App

Content

"); /// ``` -pub fn use_navigate(cx: &ScopeState) -> Result, RouterError> { +pub fn use_navigate(cx: &ScopeState) -> Option> { match use_router_internal(cx) { - Some(r) => Ok(r.sender.clone().into()), - #[allow(unreachable_code)] + Some(r) => Some(r.sender.clone().into()), None => { #[cfg(debug_assertions)] panic!("`use_navigate` must have access to a parent router"); - Err(RouterError::NotInsideRouter) + #[allow(unreachable_code)] + None } } } diff --git a/packages/router/src/hooks/use_route.rs b/packages/router/src/hooks/use_route.rs index 9f802e788..11c8a64bc 100644 --- a/packages/router/src/hooks/use_route.rs +++ b/packages/router/src/hooks/use_route.rs @@ -2,7 +2,7 @@ use async_rwlock::RwLockReadGuard; use dioxus::{core::Component, prelude::ScopeState}; use dioxus_router_core::RouterState; -use crate::{utils::use_router_internal::use_router_internal, RouterError}; +use crate::{utils::use_router_internal::use_router_internal}; /// A hook that provides access to information about the current routing location. /// @@ -56,18 +56,18 @@ use crate::{utils::use_router_internal::use_router_internal, RouterError}; /// ``` /// /// [`use_router`]: crate::hooks::use_router -pub fn use_route(cx: &ScopeState) -> Result>, RouterError> { +pub fn use_route(cx: &ScopeState) -> Option>> { match use_router_internal(cx) { Some(r) => loop { if let Some(s) = r.state.try_read() { - break Ok(s); + break Some(s); } }, - #[allow(unreachable_code)] None => { #[cfg(debug_assertions)] panic!("`use_route` must have access to a parent router"); - Err(RouterError::NotInsideRouter) + #[allow(unreachable_code)] + None } } } diff --git a/packages/router/src/lib.rs b/packages/router/src/lib.rs index 5ef4669aa..0d563e7fd 100644 --- a/packages/router/src/lib.rs +++ b/packages/router/src/lib.rs @@ -20,9 +20,6 @@ mod contexts { pub(crate) mod router; } -mod error; -pub use error::RouterError; - pub use dioxus_router_core::history; /// Hooks for interacting with the router in components.