|
@@ -79,10 +79,10 @@ fn Route2(cx: Scope, user_id: usize) -> Element {
|
|
|
|
|
|
#[inline_props]
|
|
#[inline_props]
|
|
fn Route3(cx: Scope, dynamic: String) -> Element {
|
|
fn Route3(cx: Scope, dynamic: String) -> Element {
|
|
- let router = use_router(cx);
|
|
|
|
- let router_route = router.current();
|
|
|
|
- let current_route = use_ref(cx, String::new);
|
|
|
|
- let parsed = Route::from_str(¤t_route.read());
|
|
|
|
|
|
+ let navigator = use_navigator(cx);
|
|
|
|
+ let current_route = use_route(cx)?;
|
|
|
|
+ let current_route_str = use_ref(cx, String::new);
|
|
|
|
+ let parsed = Route::from_str(¤t_route_str.read());
|
|
|
|
|
|
let site_map = Route::SITE_MAP
|
|
let site_map = Route::SITE_MAP
|
|
.iter()
|
|
.iter()
|
|
@@ -92,9 +92,9 @@ fn Route3(cx: Scope, dynamic: String) -> Element {
|
|
render! {
|
|
render! {
|
|
input {
|
|
input {
|
|
oninput: move |evt| {
|
|
oninput: move |evt| {
|
|
- *current_route.write() = evt.value.clone();
|
|
|
|
|
|
+ *current_route_str.write() = evt.value.clone();
|
|
},
|
|
},
|
|
- value: "{current_route.read()}"
|
|
|
|
|
|
+ value: "{current_route_str.read()}"
|
|
}
|
|
}
|
|
"dynamic: {dynamic}"
|
|
"dynamic: {dynamic}"
|
|
Link {
|
|
Link {
|
|
@@ -102,14 +102,14 @@ fn Route3(cx: Scope, dynamic: String) -> Element {
|
|
"hello world link"
|
|
"hello world link"
|
|
}
|
|
}
|
|
button {
|
|
button {
|
|
- onclick: move |_| { router.push(NavigationTarget::External("https://www.google.com".to_string())); },
|
|
|
|
|
|
+ onclick: move |_| { navigator.push(NavigationTarget::External("https://www.google.com".to_string())); },
|
|
"google link"
|
|
"google link"
|
|
}
|
|
}
|
|
p { "Site Map" }
|
|
p { "Site Map" }
|
|
pre { "{site_map:#?}" }
|
|
pre { "{site_map:#?}" }
|
|
p { "Dynamic link" }
|
|
p { "Dynamic link" }
|
|
if let Ok(route) = parsed {
|
|
if let Ok(route) = parsed {
|
|
- if route != router_route {
|
|
|
|
|
|
+ if route != current_route {
|
|
render! {
|
|
render! {
|
|
Link {
|
|
Link {
|
|
target: route.clone(),
|
|
target: route.clone(),
|