Make deprecated use router (#1260)
* make router props expansion better * fix router data fields * make a deprecated use_router hook
This commit is contained in:
1 parent
5e3451a6f2
commit
cfd62e274e
12 files changed
+82
-149
No files matched your search
@@ -21,7 +21,6 @@ use crate::segment::RouteSegment;
|
||||
struct RouteArgs {
|
||||
route: LitStr,
|
||||
comp_name: Option<Path>,
|
||||
props_name: Option<Path>,
|
||||
}
|
||||
|
||||
impl Parse for RouteArgs {
|
||||
@@ -34,10 +33,6 @@ impl Parse for RouteArgs {
|
||||
let _ = input.parse::<syn::Token![,]>();
|
||||
input.parse().ok()
|
||||
},
|
||||
props_name: {
|
||||
let _ = input.parse::<syn::Token![,]>();
|
||||
input.parse().ok()
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -83,22 +78,8 @@ impl Route {
|
||||
Some(attr) => {
|
||||
let args = attr.parse_args::<RouteArgs>()?;
|
||||
let comp_name = args.comp_name.unwrap_or_else(|| parse_quote!(#route_name));
|
||||
let props_name = args.props_name.unwrap_or_else(|| {
|
||||
let last = format_ident!(
|
||||
"{}Props",
|
||||
comp_name.segments.last().unwrap().ident.to_string()
|
||||
);
|
||||
let mut segments = comp_name.segments.clone();
|
||||
segments.pop();
|
||||
segments.push(last.into());
|
||||
Path {
|
||||
leading_colon: None,
|
||||
segments,
|
||||
}
|
||||
});
|
||||
ty = RouteType::Leaf {
|
||||
component: comp_name,
|
||||
props: props_name,
|
||||
};
|
||||
route = args.route.value();
|
||||
}
|
||||
@@ -227,7 +208,6 @@ impl Route {
|
||||
|
||||
pub fn routable_match(&self, layouts: &[Layout], nests: &[Nest]) -> TokenStream2 {
|
||||
let name = &self.route_name;
|
||||
let name_str = name.to_string();
|
||||
|
||||
let mut tokens = TokenStream2::new();
|
||||
|
||||
@@ -261,16 +241,16 @@ impl Route {
|
||||
}
|
||||
}
|
||||
}
|
||||
RouteType::Leaf { component, props } => {
|
||||
RouteType::Leaf { component } => {
|
||||
let dynamic_segments = self.dynamic_segments();
|
||||
let dynamic_segments_from_route = self.dynamic_segments();
|
||||
quote! {
|
||||
#[allow(unused)]
|
||||
(#last_index, Self::#name { #(#dynamic_segments,)* }) => {
|
||||
let comp = #props { #(#dynamic_segments_from_route,)* };
|
||||
let dynamic = cx.component(#component, comp, #name_str);
|
||||
render! {
|
||||
dynamic
|
||||
#component {
|
||||
#(#dynamic_segments_from_route: #dynamic_segments_from_route,)*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -364,5 +344,5 @@ impl Route {
|
||||
#[derive(Debug)]
|
||||
pub(crate) enum RouteType {
|
||||
Child(Field),
|
||||
Leaf { component: Path, props: Path },
|
||||
Leaf { component: Path },
|
||||
}
|
||||
Reference in new issue
Block a user