File tree Expand file tree Collapse file tree 4 files changed +83
-0
lines changed Expand file tree Collapse file tree 4 files changed +83
-0
lines changed Original file line number Diff line number Diff line change
1
+ import { RouterProvider as Provider } from 'react-router' ;
2
+
3
+ import { router } from './router' ;
4
+ import { RouterContext } from './router-context' ;
5
+
6
+ export const RouterProvider = ( ) => {
7
+ return (
8
+ < RouterContext . Provider value = { router } >
9
+ < Provider router = { router . reactRouter } />
10
+ </ RouterContext . Provider >
11
+ ) ;
12
+ } ;
Original file line number Diff line number Diff line change
1
+ import { createContext } from 'react' ;
2
+
3
+ import type { RouterContextType } from './router' ;
4
+
5
+ export const RouterContext = createContext < RouterContextType | null > ( null ) ;
Original file line number Diff line number Diff line change
1
+ import type { RouterNavigateOptions , To } from 'react-router-dom' ;
2
+
3
+ import { router as reactRouter } from '@/router' ;
4
+
5
+ export function navigator ( ) {
6
+ function navigate ( path : To | null , options ?: RouterNavigateOptions ) {
7
+ reactRouter . navigate ( path , options ) ;
8
+ }
9
+
10
+ function back ( ) {
11
+ reactRouter . navigate ( - 1 ) ;
12
+ }
13
+
14
+ function forward ( ) {
15
+ reactRouter . navigate ( 1 ) ;
16
+ }
17
+
18
+ function go ( delta : number ) {
19
+ reactRouter . navigate ( delta ) ;
20
+ }
21
+
22
+ function replace ( path : To ) {
23
+ reactRouter . navigate ( path , { replace : true } ) ;
24
+ }
25
+
26
+ function reload ( ) {
27
+ reactRouter . navigate ( 0 ) ;
28
+ }
29
+
30
+ function navigateUp ( ) {
31
+ reactRouter . navigate ( '..' ) ;
32
+ }
33
+
34
+ function goHome ( ) {
35
+ reactRouter . navigate ( '/' ) ;
36
+ }
37
+
38
+ return {
39
+ back,
40
+ forward,
41
+ go,
42
+ goHome,
43
+ navigate,
44
+ navigateUp,
45
+ reactRouter,
46
+ reload,
47
+ replace
48
+ } ;
49
+ }
50
+
51
+ export const router = navigator ( ) ;
52
+
53
+ export type RouterContextType = ReturnType < typeof navigator > ;
Original file line number Diff line number Diff line change
1
+ import { useMatches } from 'react-router-dom' ;
2
+
3
+ /** - get route meta */
4
+ export function useRoute < T = unknown > ( ) {
5
+ const matches = useMatches ( ) ;
6
+
7
+ const route = matches . at ( - 1 ) as Router . Route < T > ;
8
+
9
+ return {
10
+ ...route ,
11
+ matched : matches . slice ( 1 ) as Router . Route < T > [ ]
12
+ } ;
13
+ }
You can’t perform that action at this time.
0 commit comments