17 breaking releases
0.18.0 | Sep 29, 2023 |
---|---|
0.17.0 | Nov 25, 2022 |
0.16.0 | Dec 11, 2021 |
0.15.0 | May 15, 2021 |
0.3.0 | Jul 24, 2019 |
#573 in GUI
17,792 downloads per month
Used in 29 crates
(25 directly)
610KB
14K
SLoC
Provides routing faculties using the browser history API to build Single Page Applications (SPAs) using Yew web framework.
Usage
use yew::functional::*;
use yew::prelude::*;
use yew_router::prelude::*;
#[derive(Debug, Clone, Copy, PartialEq, Routable)]
enum Route {
#[at("/")]
Home,
#[at("/secure")]
Secure,
#[not_found]
#[at("/404")]
NotFound,
}
#[function_component(Secure)]
fn secure() -> Html {
let navigator = use_navigator().unwrap();
let onclick_callback = Callback::from(move |_| navigator.push(&Route::Home));
html! {
<div>
<h1>{ "Secure" }</h1>
<button onclick={onclick_callback}>{ "Go Home" }</button>
</div>
}
}
#[function_component(Main)]
fn app() -> Html {
html! {
<BrowserRouter>
<Switch<Route> render={switch} />
</BrowserRouter>
}
}
fn switch(routes: Route) -> Html {
match routes {
Route::Home => html! { <h1>{ "Home" }</h1> },
Route::Secure => html! {
<Secure />
},
Route::NotFound => html! { <h1>{ "404" }</h1> },
}
}
Internals
The router registers itself as a context provider and makes location information and navigator
available via hooks
or RouterScopeExt
.
State
The Location
API has a way to access / store state associated with
session history. Please consult location.state()
for
detailed usage.
A module that provides universal session history and location information.
Prelude module to be imported when working with yew-router
.
This module re-exports the frequently used types from the crate.
yew-router
A routing library for the Yew frontend framework.
Dependencies
~12–21MB
~300K SLoC