pub struct Router<T: Clone + ToString + From<String> + PartialEq + 'static> {
pub route: Computed<T>,
/* private fields */
}
Expand description
Router based on path or hash part of current location.
Note: If you want your app to support dynamic mount point, you should use method Driver::route_to_public which will always prefix your route with mount point.
use vertigo::{dom, DomNode, get_driver, router::Router};
#[derive(Clone, PartialEq, Debug)]
pub enum Route {
Page1,
Page2,
NotFound,
}
impl Route {
pub fn new(path: &str) -> Route {
match path {
"" | "/" | "/page1" => Self::Page1,
"/page2" => Self::Page2,
_ => Self::NotFound,
}
}
}
impl std::fmt::Display for Route {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let str = match self {
Self::Page1 => "/",
Self::Page2 => "/page2",
Self::NotFound => "/404",
};
f.write_str(&get_driver().route_to_public(str))
}
}
impl From<String> for Route {
fn from(url: String) -> Self {
Route::new(url.as_str())
}
}
#[derive(Clone)]
pub struct State {
route: Router<Route>,
}
impl State {
pub fn component() -> DomNode {
let route = Router::new_history_router();
let state = State {
route,
};
render(state)
}
}
fn render(state: State) -> DomNode {
dom! {
<div>
"..."
</div>
}
}
Fields§
§route: Computed<T>
Implementations§
Source§impl<T: Clone + ToString + From<String> + PartialEq + 'static> Router<T>
impl<T: Clone + ToString + From<String> + PartialEq + 'static> Router<T>
Sourcepub fn new_hash_router() -> Router<T>
pub fn new_hash_router() -> Router<T>
Create new Router which sets route value upon hash change in browser bar. If callback is provided then it is fired instead.
Sourcepub fn new_history_router() -> Router<T>
pub fn new_history_router() -> Router<T>
Create new Router which sets route value upon url change (works with browser history)
pub fn set(&self, route: T)
Trait Implementations§
Source§impl<T: PartialEq + Clone + ToString + From<String> + PartialEq + 'static> PartialEq for Router<T>
impl<T: PartialEq + Clone + ToString + From<String> + PartialEq + 'static> PartialEq for Router<T>
Source§impl<T: Clone + PartialEq + ToString + From<String>> ToComputed<T> for Router<T>
impl<T: Clone + PartialEq + ToString + From<String>> ToComputed<T> for Router<T>
fn to_computed(&self) -> Computed<T>
impl<T: Clone + ToString + From<String> + PartialEq + 'static> StructuralPartialEq for Router<T>
Auto Trait Implementations§
impl<T> Freeze for Router<T>
impl<T> !RefUnwindSafe for Router<T>
impl<T> !Send for Router<T>
impl<T> !Sync for Router<T>
impl<T> Unpin for Router<T>
impl<T> !UnwindSafe for Router<T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more