reactjs - Hur genererar man href för en given rutt i Tanstack-router?
Jag använder React Spectrum och behöver använda dess Link-komponent med TanStack React Router. Enligt Spectrums dokumentation bör jag använda en överordnad provider och exponera funktionen som kommer att navigera till den givna strängen/href-rutten:
import { Provider, defaultTheme } from '@adobe/react-spectrum';
import { useNavigate } from '@tanstack/react-router';
export function App(props: AppProps) {
const { children } = props;
const navigateFn = useNavigate();
const navigate = (to: string) => {
navigateFn({ to });
};
return (
<Provider theme={defaultTheme} router={{ navigate }}>
{children}
</Provider>
);
}
Nu har jag en rutt definierad för att återställa lösenordet:
export const resetRoute = createRoute({
getParentRoute: () => authRoute,
path: '/reset-password/$resetToken',
component: Reset,
});
I en av mina komponenter behöver jag generera detta href som jag kan skicka till <Link />-komponenten på det här sättet:
import { Link } from '@adobe/react-spectrum';
// ????
const resetHref = `/how/to/generate/href/for/resetRoute/using/tanstack/api`;
return (
<Link href={resetHref} />
);
Det verkar som om TanStack-router inte har något API/hook som kan hjälpa mig att konstruera denna URL på ett typ-säkert sätt. Finns det något liknande men typ-säkert sätt att få URLen:
const href: string = useHrefForRoute({
to: resetRoute,
// Type error if invalid parameters are passed
params: {
resetToken: '1234',
},
});
Svar #1
Du kan använda useLinkProps (https://tanstack.com/router/latest/docs/framework/react/api/router/useLinkPropsHook).
Så här:
const {href} = useLinkProps({
to: Route.fullPath,
})
