#sycamore #router #fragment-hash

fracter

基于片段哈希的路由器,用于Sycamore

1 个不稳定版本

0.1.0 2024年4月24日

#1 in #sycamore

MIT 许可证

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