Improve inline docs * improve incorrect event handler return error message * Improve event handler docs * document the eval functions * document spawn and common spawn errors * fix event handler docs * add notes about how you use attributes and elements in rsx * add doc aliases for attributes and events we rename * add some more aliases for common search terms * don't doc ignore any public examples in core * don't ignore public doc examples in ssr * don't ignore examples in the dioxus package readme * add a warning when you launch without a renderer enabled * fix some outdated element docs * add a bunch of examples to resource * add notes about desktop events * add more docs for use_resource * add on_unimplemented hint to Dependency * fix some unresolved links * add examples to each of the router traits * add not implemented errors for router traits * add an example to the routable trait * expand rsx macro docs * improve memo docs * update the dioxus readme * mention dioxus crate features in the docs * fix a bunch of doc tests * fix html doc tests * fix router doc tests * fix dioxus signals doc tests * fix dioxus ssr doc tests * fix use_future example in the hooks cheat sheet * add a javascript alias for eval * fix hook explanation values * remove unused embed-doc-image dependency
53 lines
1.3 KiB
Rust
53 lines
1.3 KiB
Rust
use crate::prelude::*;
|
|
use crate::utils::use_router_internal::use_router_internal;
|
|
|
|
/// A hook that provides access to information about the current routing location.
|
|
///
|
|
/// > The Routable macro will define a version of this hook with an explicit type.
|
|
///
|
|
/// # Panic
|
|
/// - When the calling component is not nested within a [`Router`] component.
|
|
///
|
|
/// # Example
|
|
/// ```rust
|
|
/// # use dioxus::prelude::*;
|
|
/// # use dioxus_router::{prelude::*};
|
|
///
|
|
/// #[derive(Clone, Routable)]
|
|
/// enum Route {
|
|
/// #[route("/")]
|
|
/// Index {},
|
|
/// }
|
|
///
|
|
/// #[component]
|
|
/// fn App() -> Element {
|
|
/// rsx! {
|
|
/// h1 { "App" }
|
|
/// Router::<Route> {}
|
|
/// }
|
|
/// }
|
|
///
|
|
/// #[component]
|
|
/// fn Index() -> Element {
|
|
/// let path: Route = use_route();
|
|
/// rsx! {
|
|
/// h2 { "Current Path" }
|
|
/// p { "{path}" }
|
|
/// }
|
|
/// }
|
|
/// #
|
|
/// # let mut vdom = VirtualDom::new(App);
|
|
/// # vdom.rebuild_in_place();
|
|
/// # assert_eq!(dioxus_ssr::render(&vdom), "<h1>App</h1><h2>Current Path</h2><p>/</p>")
|
|
/// ```
|
|
#[doc(alias = "use_url")]
|
|
#[must_use]
|
|
pub fn use_route<R: Routable + Clone>() -> R {
|
|
match use_router_internal() {
|
|
Some(r) => r.current(),
|
|
None => {
|
|
panic!("`use_route` must be called in a descendant of a Router component")
|
|
}
|
|
}
|
|
}
|