1 个不稳定版本
0.1.0 | 2024年4月24日 |
---|
#1 in #sycamore
6KB
69 行
🍫 Fracter
基于片段哈希的路由器,用于Sycamore
Fracter
trait将为Isomorphism
+ Default
+ PartialEq
实现的枚举类型默认实现。
支持Sycamore版本0.9.0或更高版本。
示例
use sycamore::prelude::*;
use fracter::{Fracter, Isomorphism};
#[derive(Debug, Clone, Copy, Default, Eq, PartialEq, Isomorphism)]
#[isomorphism(list=[Index, Notice, Contact])]
pub enum Fragment {
#[default] Index,
Notice,
Contact
}
#[component]
pub fn App<G: Html>() -> View<G> {
// `init` will handle everything: captures hash change, updates history, etc.
let fragment = Fragment::init();
view! {
main() {
// Use fragment as if router
(match fragment.get() {
Fragment::Notice => view! { "📢 Notice" },
Fragment::Contact => view! { "🔭 Contact" },
_ => view! { "✅ Index" },
})
}
}
}
依赖项
~13MB
~225K SLoC