@@ -14,7 +14,7 @@ import {unstable_RouterProvider as RouterProvider} from '@gravity-ui/uikit/unsta
14
14
The following example shows the general pattern.
15
15
16
16
``` jsx
17
- import {useNavigation , useHref } from ' your-router' ;
17
+ import {useNavigation , createHref } from ' your-router' ;
18
18
import {Link } from ' @gravity-ui/uikit' ;
19
19
import {unstable_RouterProvider as RouterProvider } from ' @gravity-ui/uikit/unstable' ;
20
20
@@ -31,7 +31,7 @@ function App() {
31
31
const navigate = useNavigation ();
32
32
33
33
return (
34
- < RouterProvider navigate= {navigate} useHref = {useHref }>
34
+ < RouterProvider navigate= {navigate} createHref = {createHref }>
35
35
< Link
36
36
href= {{to: " /posts/$postId" , params: {postId: ' 1' }}}
37
37
routerOptions= {{replace: true }}
@@ -68,23 +68,54 @@ function App() {
68
68
### React Router v6
69
69
70
70
``` jsx
71
- import {useNavigate , useHref } from ' react-router-dom' ;
72
- import {unstable_RouterProvider as RouterProvider } from ' @gravity-ui/uikit/unstable' ;
71
+ import {useNavigate , useHref , createBrowserRouter , RouterProvider } from ' react-router-dom' ;
72
+ import {unstable_RouterProvider as UIKitRouterProvider } from ' @gravity-ui/uikit/unstable' ;
73
73
74
- import type {NavigateOptions } from ' react-router-dom' ;
74
+ import type {NavigateOptions , To } from ' react-router-dom' ;
75
75
76
76
declare module ' @gravity-ui/uikit' {
77
77
interface RouterConfig {
78
+ href: To
78
79
routerOptions: NavigateOptions
79
80
}
80
81
}
81
82
82
- function App () {
83
- const navigate = useNavigate ();
83
+ function withRouterProvider (Component : React .ComponentType ) {
84
+ return function RouterProviderComponent () {
85
+ const navigate = useNavigate ();
86
+ return (
87
+ < UIKitRouterProvider navigate= {navigate} createHref= {useHref}>
88
+ < Component / >
89
+ < / UIKitRouterProvider>
90
+ );
91
+ }
92
+ }
84
93
85
- return (
86
- < RouterProvider navigate= {navigate} useHref= {useHref}> {/* ...*/ }< / RouterProvider>
87
- );
94
+ const router = createBrowserRouter ([
95
+ {
96
+ path: ' /' ,
97
+ Component: withRouterProvider (Layout),
98
+ children: [
99
+ {
100
+ path: ' /' ,
101
+ Component: withRouterProvider (Home),
102
+ }
103
+ {
104
+ path: ' posts' ,
105
+ Component: withRouterProvider (Posts),
106
+ children: [
107
+ {
108
+ path: ' :postId' ,
109
+ Component: withRouterProvider (Post),
110
+ }
111
+ ]
112
+ },
113
+ ],
114
+ },
115
+ ]);
116
+
117
+ function App () {
118
+ return < RouterProvider router= {router} / > ;
88
119
}
89
120
```
90
121
@@ -162,7 +193,7 @@ function App() {
162
193
return (
163
194
< RouterProvider
164
195
router= {(to , opts ) => router .navigate ({... to, ... opts})}
165
- useHref = {(to ) => router .buildLocation (to).href }
196
+ createHref = {(to ) => router .buildLocation (to).href }
166
197
>
167
198
{/* ...*/ }
168
199
< / RouterProvider>
0 commit comments