Skip to content

Commit 22d219c

Browse files
committed
fix: remove useHref
1 parent ad9588e commit 22d219c

File tree

3 files changed

+16
-27
lines changed

3 files changed

+16
-27
lines changed

src/components/lab/router/README.md

+8-8
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@ function App() {
3131
const navigate = useNavigation();
3232

3333
return (
34-
<RouterProvider navigate={navigate} useHref={useHref}>
34+
<RouterProvider navigate={navigate}}>
3535
<Link
36-
href={{to:"/posts/$postId", params: {postId: '1'}}}
36+
href="/posts"
3737
routerOptions={{replace: true}}
3838
>
39-
Post 1 (local link)
39+
Posts (local link)
4040
</Link>
4141
<Link href="https://gravity-ui.com">Gravity UI (external link)</Link>
4242
</RouterProvider>
@@ -83,7 +83,9 @@ function App() {
8383
const navigate = useNavigate();
8484

8585
return (
86-
<RouterProvider navigate={navigate} useHref={useHref}>{/*...*/}</RouterProvider>
86+
<RouterProvider navigate={navigate}>
87+
<Link href={useHref('/posts')} routerOptions={{replace: true}}>{/*...*/}</Link>
88+
</RouterProvider>
8789
);
8890
}
8991
```
@@ -151,7 +153,6 @@ import type {NavigateOptions, ToOptions} from '@tanstack/react-router';
151153

152154
declare module '@gravity-ui/uikit' {
153155
interface RouterConfig {
154-
href: ToOptions;
155156
routerOptions: Omit<NavigateOptions, keyof ToOptions>;
156157
}
157158
}
@@ -161,10 +162,9 @@ function App() {
161162

162163
return (
163164
<RouterProvider
164-
router={(to, opts) => router.navigate({...to, ...opts})}
165-
useHref={(to) => router.buildLocation(to).href}
165+
router={(to, opts) => router.navigate({to, ...opts})}
166166
>
167-
{/*...*/}
167+
<Link href={router.buildLocation('/posts').href} routerOptions={{replace: true}}>{/*...*/}</Link>
168168
</RouterProvider>
169169
);
170170
}

src/components/lab/router/__stories__/RouterProvider.stories.tsx

+4-10
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type {Meta, StoryObj} from '@storybook/react';
44

55
import {Link} from '../../../Link';
66
import {Flex} from '../../../layout';
7-
import type {Href, RouterOptions} from '../../../types';
7+
import type {RouterOptions} from '../../../types';
88
import {RouterProvider} from '../router';
99

1010
const meta: Meta<typeof RouterProvider> = {
@@ -26,21 +26,15 @@ export const Default = {
2626
* }
2727
* }
2828
*/
29-
type HrefType = {to: string; params: Record<string, string>} | string;
3029
return (
31-
<RouterProvider
32-
navigate={(href, opts) => console.log('Navigate to: ', {href, opts})}
33-
useHref={(href: HrefType) =>
34-
typeof href === 'string' ? href : href.to.replace('$pastId', href.params.pastId)
35-
}
36-
>
30+
<RouterProvider navigate={(href, opts) => console.log('Navigate to: ', {href, opts})}>
3731
<Flex gap={2} direction="column">
3832
<Link
3933
view="primary"
40-
href={{to: '/posts/$pastId', params: {pastId: 'post-1'}} as unknown as Href}
34+
href="/posts"
4135
routerOptions={{replace: true} as RouterOptions}
4236
>
43-
Post 1 (local link)
37+
Posts (local link)
4438
</Link>
4539
<Link view="primary" href="https://gravity-ui.com">
4640
Gravity UI (external link)

src/components/lab/router/router.tsx

+4-9
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,18 @@ interface RouterProps {
99
href: Href,
1010
routerOptions: RouterOptions | undefined,
1111
) => boolean;
12-
useHref: (href: Href) => string;
1312
}
1413

1514
const routerContext = React.createContext<RouterProps>({
1615
openLink: () => false,
17-
useHref: (href) => href,
1816
});
1917

2018
export interface RouterProviderProps {
2119
navigate: (href: Href, routerOptions: RouterOptions | undefined) => void;
22-
useHref?: (href: Href) => string;
2320
children: React.ReactNode;
2421
}
2522

26-
export function RouterProvider({navigate, useHref, children}: RouterProviderProps) {
23+
export function RouterProvider({navigate, children}: RouterProviderProps) {
2724
const value: RouterProps = React.useMemo(
2825
() => ({
2926
openLink: (link, modifiers, href, routerOptions) => {
@@ -33,9 +30,8 @@ export function RouterProvider({navigate, useHref, children}: RouterProviderProp
3330
}
3431
return false;
3532
},
36-
useHref: useHref || ((href: Href) => href),
3733
}),
38-
[navigate, useHref],
34+
[navigate],
3935
);
4036

4137
return <routerContext.Provider value={value}>{children}</routerContext.Provider>;
@@ -89,10 +85,9 @@ interface LinkProps {
8985
}
9086

9187
export function useLinkProps(props: LinkProps) {
92-
const {useHref, openLink} = useRouter();
93-
const href = useHref(props.href ?? '');
88+
const {openLink} = useRouter();
9489
return {
95-
href: props.href ? href : undefined,
90+
href: props.href,
9691
hrefLang: props.hrefLang,
9792
target: props.target,
9893
rel: props.target === '_blank' && !props.rel ? 'noopener noreferrer' : props.rel,

0 commit comments

Comments
 (0)