diff --git a/examples/router/src/main.rs b/examples/router/src/main.rs index 7ee9b47d5dc..c16b68c3370 100644 --- a/examples/router/src/main.rs +++ b/examples/router/src/main.rs @@ -1,5 +1,7 @@ +use std::rc::Rc; + use yew::prelude::*; -use yew_router::prelude::*; +use yew_router::{prelude::*, router::RouterListener}; mod components; mod content; @@ -9,7 +11,6 @@ use pages::{ author::Author, author_list::AuthorList, home::Home, page_not_found::PageNotFound, post::Post, post_list::PostList, }; -use yew_router::router::RouterUpdate; #[derive(Routable, PartialEq, Clone, Debug)] pub enum Route { @@ -38,24 +39,28 @@ impl Default for Route { pub enum Msg { ToggleNavbar, - RouteChanged(RouterUpdate), + RouteChanged(Rc), } pub struct Model { link: ComponentLink, - router: Router, + route: Rc, navbar_active: bool, + _listener: RouterListener, } impl Component for Model { type Message = Msg; type Properties = (); fn create(_props: Self::Properties, link: ComponentLink) -> Self { - let router = Router::new(link.clone(), link.callback(Msg::RouteChanged)); + let router = Router::new(link.clone()); + let route = router.current(); + let _listener = router.register(link.callback(Msg::RouteChanged)); Self { link, - router, + route, navbar_active: false, + _listener, } } @@ -65,8 +70,8 @@ impl Component for Model { self.navbar_active = !self.navbar_active; true } - Msg::RouteChanged(update) => { - self.router.update(update); + Msg::RouteChanged(route) => { + self.route = route; true } } @@ -81,9 +86,28 @@ impl Component for Model { <> { self.view_nav() } -
- { switch(&self.router.route()) } -
+
{ + match &*self.route { + Route::Post { id } => { + html! { } + } + Route::Posts { page } => { + html! { } + } + Route::Author { id } => { + html! { } + } + Route::Authors => { + html! { } + } + Route::Home => { + html! { } + } + Route::NotFound => { + html! { } + } + } + }