sealerЭто кластер на основе Kuberentes, отражающий технологию с открытым исходным кодом, предоставленную Alibaba, которая может упаковать весь кластер в единое целое.
Sealer Cloud может помочь пользователям упаковывать, совместно использовать и запускать кластеры в Интернете. внедрение технологии rust+wasm.
Эта короткая статья знакомит с обработкой внешней части маршрутизации, перехода по ссылкам, передачи параметров и т. д.
определить маршруты
use yew_router::prelude::*;
#[derive(Switch,Clone)]
pub enum AppRoute {
#[to = "/images/{name}"]
ImageDetail(String),
#[to = "/images"]
Images
}
pub type Anchor = RouterAnchor<AppRoute>
У нас есть две страницы, URL-адрес, соответствующий списку изображений,/images
,
Другая страница сведений об изображении, соответствующий URL-адрес/image/{name}
,
В качестве параметра прыжка берем имя изображения.
Изображения и ImageDetail здесь — это модели, которые мы определили ранее, и я не знаю, что читать в моей предыдущей статье.
Матч на главной странице
Различные пользовательские интерфейсы модели отображаются во всем теле в соответствии с разными URL-адресами.
fn view(&self) -> Html {
html! {
<div>
<Header />
<Router<AppRoute> render = Router::render(Self::switch) />
</div>
}
...
Функция переключения определяет логику вызова:
fn switch(route: AppRoute) -> Html {
match route {
AppRoute::Images => html! { <Images /> },
AppRoute::ImageDetail(name)=> html! { <ImageDetail imageName=name /> }
}
}
Очень просто и элегантно, разные маршруты подходят к разным моделям.
Передача параметров
AppRoute::ImageDetail(name)=> html! { <ImageDetail imageName=name /> }
Вы можете видеть, что этот маршрут пытается передать параметры на страницу ImageDetail.
Структура ImageDetail должна получить этот параметр:
pub struct ImageDetail{
props: Props,
}
#[derive(Properties, Clone)]
pub struct Props {
pub imageName: String, // 这个名字与imageName=name对应
}
Присвойте ему значение при инициализации:
fn create(props: Self::Properties, _: ComponentLink<Self>) -> Self {
ImageDetail{
props,
}
}
Тогда мы можем использовать его:
fn view(&self) -> Html {
html! {
<div>
{ "this is image info" }
{ self.props.imageName.to_string() }
</div>
}
}
Перейти по ссылке
Как страница imageList переходит на страницу ImageDetail?
<Anchor route=AppRoute::ImageDetail(image.name.to_string())>
<p>
{ image.name.to_string() }
</p>
</Anchor>
Таким образом, имя изображения передается на подстраницу, что очень просто, удобно и элегантно.
Подробный код можно найти в следующей информации ~
Релевантная информация:
Исходный код интерфейса Sealer Cloud
Проблемы, возникающие в процессе Установка kubernetes в один клик