/
germanubis
/
yew
Обзор
Документация
Войти
/
germanubis
/
yew
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/function_router/src/app.rs
110 строк
3 KB
Kaede Hoshikawa
Fix Clippy for 1.63 (#2825)
12 авг 2022, 16:16
Не верифицирован
12 авг 2022, 16:16
989d804
Код
Авторство
О чём код?
use std::collections::HashMap; use yew::prelude::*; use yew_router::history::{AnyHistory, History, MemoryHistory}; use yew_router::prelude::*; use crate::components::nav::Nav; use crate::pages::author::Author; use crate::pages::author_list::AuthorList; use crate::pages::home::Home; use crate::pages::page_not_found::PageNotFound; use crate::pages::post::Post; use crate::pages::post_list::PostList; #[derive(Routable, PartialEq, Eq, Clone, Debug)] pub enum Route { #[at("/posts/:id")] Post { id: u32 }, #[at("/posts")] Posts, #[at("/authors/:id")] Author { id: u32 }, #[at("/authors")] Authors, #[at("/")] Home, #[not_found] #[at("/404")] NotFound, } #[function_component] pub fn App() -> Html { html! { <BrowserRouter> <Nav /> <main> <Switch<Route> render={switch} /> </main> <footer class="footer"> <div class="content has-text-centered"> { "Powered by " } <a href="https://yew.rs">{ "Yew" }</a> { " using " } <a href="https://bulma.io">{ "Bulma" }</a> { " and images from " } <a href="https://unsplash.com">{ "Unsplash" }</a> </div> </footer> </BrowserRouter> } } #[derive(Properties, PartialEq, Eq, Debug)] pub struct ServerAppProps { pub url: AttrValue, pub queries: HashMap<String, String>, } #[function_component] pub fn ServerApp(props: &ServerAppProps) -> Html { let history = AnyHistory::from(MemoryHistory::new()); history .push_with_query(&*props.url, &props.queries) .unwrap(); html! { <Router history={history}> <Nav /> <main> <Switch<Route> render={switch} /> </main> <footer class="footer"> <div class="content has-text-centered"> { "Powered by " } <a href="https://yew.rs">{ "Yew" }</a> { " using " } <a href="https://bulma.io">{ "Bulma" }</a> { " and images from " } <a href="https://unsplash.com">{ "Unsplash" }</a> </div> </footer> </Router> } } fn switch(routes: Route) -> Html { match routes { Route::Post { id } => { html! { <Post seed={id} /> } } Route::Posts => { html! { <PostList /> } } Route::Author { id } => { html! { <Author seed={id} /> } } Route::Authors => { html! { <AuthorList /> } } Route::Home => { html! { <Home /> } } Route::NotFound => { html! { <PageNotFound /> } } } }