Add initial version of hash history (#4311)
* Add initial version of hash history * wip... * more cleanups * cleanup the web history impl and then add a playwright test --------- Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
This commit is contained in:
1 parent
fd1b04eba1
commit
2be2333ef4
11 files changed
+358
-104
No files matched your search
@@ -0,0 +1,61 @@
|
||||
use std::rc::Rc;
|
||||
|
||||
use dioxus::{prelude::*, web::HashHistory};
|
||||
|
||||
fn main() {
|
||||
dioxus::LaunchBuilder::new()
|
||||
.with_cfg(dioxus::web::Config::new().history(Rc::new(HashHistory::new(false))))
|
||||
.launch(|| {
|
||||
rsx! {
|
||||
Router::<Route> {}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
#[derive(Routable, Clone, PartialEq)]
|
||||
#[rustfmt::skip]
|
||||
enum Route {
|
||||
#[redirect("/",|| Route::Other)]
|
||||
#[route("/other")]
|
||||
Other,
|
||||
#[route("/other/:id")]
|
||||
OtherId { id: String },
|
||||
#[route("/:..segments")]
|
||||
NotFound { segments: Vec<String> },
|
||||
}
|
||||
|
||||
#[component]
|
||||
fn Other() -> Element {
|
||||
rsx! {
|
||||
div {
|
||||
id: "other",
|
||||
"Other"
|
||||
}
|
||||
|
||||
Link {
|
||||
id: "other-id-link",
|
||||
to: Route::OtherId { id: "123".to_string() },
|
||||
"go to OtherId"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[component]
|
||||
fn OtherId(id: String) -> Element {
|
||||
rsx! {
|
||||
div {
|
||||
id: "other-id",
|
||||
"OtherId {id}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[component]
|
||||
fn NotFound(segments: Vec<String>) -> Element {
|
||||
rsx! {
|
||||
div {
|
||||
id: "not-found",
|
||||
"NotFound {segments:?}"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user