@@ -10,6 +10,22 @@ use pages::{
1010 post_list:: PostList ,
1111} ;
1212
13+ #[ derive( Routable , PartialEq , Clone , Debug ) ]
14+ pub enum Routes {
15+ #[ at( "/posts/:id" ) ]
16+ Post { id : u64 } ,
17+ #[ at( "/posts" ) ]
18+ Posts ,
19+ #[ at( "/authors/:id" ) ]
20+ Author { id : u64 } ,
21+ #[ at( "/authors" ) ]
22+ Authors ,
23+ #[ at( "/" ) ]
24+ Home ,
25+ #[ at( "/404" ) ]
26+ NotFound ,
27+ }
28+
1329pub enum Msg {
1430 ToggleNavbar ,
1531}
@@ -48,35 +64,31 @@ impl Component for Model {
4864 { self . view_nav( ) }
4965
5066 <main>
51- <Router not_found_route="/404" >
52- <Route to="/posts/:id" >
67+ <Router < Routes > not_found_route="/404" >
68+ <Route to=Routes :: POST >
5369 <Post />
5470 </Route >
5571
56- <Route to="/posts" >
57- <PostList />
58- </Route >
59-
60- <Route to="/posts" >
72+ <Route to=Routes :: POSTS >
6173 <PostList />
6274 </Route >
6375
64- <Route to="/authors/:id" >
76+ <Route to=Routes :: AUTHOR >
6577 <Author />
6678 </Route >
6779
68- <Route to="/authors" >
80+ <Route to=Routes :: AUTHORS >
6981 <AuthorList />
7082 </Route >
7183
72- <Route to="/" >
84+ <Route to=Routes :: HOME >
7385 <Home />
7486 </Route >
7587
76- <Route to="404" >
88+ <Route to=Routes :: NOT_FOUND >
7789 <PageNotFound />
7890 </Route >
79- </Router >
91+ </Router < Routes > >
8092 </main>
8193 <footer class="footer" >
8294 <div class="content has-text-centered" >
@@ -119,22 +131,22 @@ impl Model {
119131 </div>
120132 <div class=classes!( "navbar-menu" , active_class) >
121133 <div class="navbar-start" >
122- <Link classes="navbar-item" route="/" >
134+ <Link < Routes > classes="navbar-item" route=Routes :: Home >
123135 { "Home" }
124- </Link >
125- <Link classes="navbar-item" route="/posts" >
136+ </Link < Routes > >
137+ <Link < Routes > classes="navbar-item" route=Routes :: Posts >
126138 { "Posts" }
127- </Link >
139+ </Link < Routes > >
128140
129141 <div class="navbar-item has-dropdown is-hoverable" >
130142 <a class="navbar-link" >
131143 { "More" }
132144 </a>
133145 <div class="navbar-dropdown" >
134146 <a class="navbar-item" >
135- <Link classes="navbar-item" route="/authors" >
147+ <Link < Routes > classes="navbar-item" route=Routes :: Authors >
136148 { "Meet the authors" }
137- </Link >
149+ </Link < Routes > >
138150 </a>
139151 </div>
140152 </div>
0 commit comments