1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
//! # Native Router
//!
//! Even though Freya supports Dioxus Router, there are certain integrations that it does not provide, such as as back and forward navigation with the mouse buttons.
//! For things like this exists `NativeRouter`, a thin wrapper component that adds these missing integrations.
//!
//! You simply need to wrap your `Router` content inside the `NativeRouter` component.
//!
//! Example (based on the example from [router](crate::_docs::router)):
//! ```rust, no_run
//! # use freya::prelude::*;
//! # use dioxus_router::prelude::*;
//! # use freya_components::Link;
//! # #[allow(non_snake_case)]
//! fn AppSidebar() -> Element {
//! rsx!(
//! NativeRouter {
//! Body {
//! Link {
//! to: Route::Home,
//! label {
//! "Home"
//! }
//! },
//! Link {
//! to: Route::Other,
//! label {
//! "Other"
//! }
//! },
//! // Rest of app
//! }
//! }
//! )
//! }
//! # #[rustfmt::skip]
//! # pub enum Route {
//! # #[layout(AppSidebar)]
//! # #[route("/")]
//! # Home,
//! # #[route("/other")]
//! # Other,
//! # #[end_layout]
//! # #[route("/..route")]
//! # PageNotFound { }, // Handle 404 routes.
//! # }
//! #
//! # #[component]
//! # fn Home() -> Element {
//! # rsx!(
//! # label {
//! # "Home Page"
//! # }
//! # )
//! # }
//! #
//! # #[component]
//! # fn Other() -> Element {
//! # rsx!(
//! # label {
//! # "Other Page"
//! # }
//! # )
//! # }
//! #
//! # #[component]
//! # fn PageNotFound() -> Element {
//! # rsx!(
//! # label {
//! # "404"
//! # }
//! # )
//! # }
//! ```