File tree Expand file tree Collapse file tree 4 files changed +21
-4
lines changed
packages/runtime/plugin-runtime/src Expand file tree Collapse file tree 4 files changed +21
-4
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ ' @modern-js/runtime ' : patch
3
+ ---
4
+
5
+ feat: when use convention routes, useRuntimeContext will return routes field, which is the routes of the current app
6
+ feat: 当前应用为约定式路由时,useRuntimeContext 支持返回 routes 字段,表示当前应用的完整路由表
Original file line number Diff line number Diff line change 1
1
import type { StaticHandlerContext } from '@modern-js/runtime-utils/remix-router' ;
2
+ import type { RouteObject } from '@modern-js/runtime-utils/router' ;
2
3
import { ROUTE_MANIFEST } from '@modern-js/utils/universal/constants' ;
3
4
import { createContext } from 'react' ;
4
5
import type { RouteManifest } from '../../router/runtime/types' ;
@@ -30,14 +31,15 @@ export const RuntimeReactContext = createContext<RuntimeContext>({} as any);
30
31
export const ServerRouterContext = createContext ( { } as any ) ;
31
32
32
33
// TODO: We should export this context to user as RuntimeContext, use in `init` function
33
- export interface TRuntimeContext extends Partial < BaseRuntimeContext > {
34
+ export interface TRuntimeContext {
34
35
initialData ?: Record < string , unknown > ;
35
36
isBrowser : boolean ;
36
37
context : TSSRContext ;
37
38
/** @deprecated use context.request field instead */
38
39
request ?: SSRServerContext [ 'request' ] ;
39
40
/** @deprecated use context.response field instead */
40
41
response ?: SSRServerContext [ 'response' ] ;
42
+ routes ?: RouteObject [ ] ;
41
43
[ key : string ] : any ;
42
44
}
43
45
Original file line number Diff line number Diff line change @@ -8,7 +8,10 @@ import {
8
8
createStaticRouter ,
9
9
} from '@modern-js/runtime-utils/node/router' ;
10
10
import { createStaticHandler } from '@modern-js/runtime-utils/remix-router' ;
11
- import { createRoutesFromElements } from '@modern-js/runtime-utils/router' ;
11
+ import {
12
+ type RouteObject ,
13
+ createRoutesFromElements ,
14
+ } from '@modern-js/runtime-utils/router' ;
12
15
import { time } from '@modern-js/runtime-utils/time' ;
13
16
import { LOADER_REPORTER_NAME } from '@modern-js/utils/universal/constants' ;
14
17
import type React from 'react' ;
@@ -89,7 +92,7 @@ export const routerPlugin = (
89
92
90
93
await hooks . onBeforeCreateRoutes . call ( context ) ;
91
94
92
- let routes = createRoutes
95
+ let routes : RouteObject [ ] = createRoutes
93
96
? createRoutes ( )
94
97
: createRoutesFromElements (
95
98
renderRoutes ( {
@@ -153,7 +156,12 @@ export const routerPlugin = (
153
156
context . remixRouter = router ;
154
157
155
158
// private api, pass to React Component in `wrapRoot`
156
- context . routes = routes ;
159
+ Object . defineProperty ( context , 'routes' , {
160
+ get ( ) {
161
+ return routes ;
162
+ } ,
163
+ enumerable : true ,
164
+ } ) ;
157
165
} ) ;
158
166
159
167
api . wrapRoot ( App => {
Original file line number Diff line number Diff line change @@ -86,6 +86,7 @@ export const routerPlugin = (
86
86
get ( ) {
87
87
return routes ;
88
88
} ,
89
+ enumerable : true ,
89
90
} ) ;
90
91
} ) ;
91
92
api . wrapRoot ( App => {
You can’t perform that action at this time.
0 commit comments