| Crates.io | fracter |
| lib.rs | fracter |
| version | 0.1.0 |
| created_at | 2024-04-24 03:05:06.435474+00 |
| updated_at | 2024-04-24 03:05:06.435474+00 |
| description | Fragment hash based router, for Sycamore |
| homepage | |
| repository | https://github.com/acheul/fracter |
| max_upload_size | |
| id | 1218338 |
| size | 6,139 |
Fragment hash based router, for Sycamore
Fracter trait will be default implemented for Isomorphism + Default + PartialEq implemented enum type.
Supports Sycamore version 0.9.0 or later.
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" },
})
}
}
}