@umijs/renderer-react 4.0.0-canary.20240509.4 → 4.0.0-canary.20240510.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/appContext.d.ts +1 -0
- package/dist/appContext.js +11 -1
- package/dist/browser.js +32 -9
- package/dist/html.js +1 -3
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -1
- package/dist/types.d.ts +15 -2
- package/package.json +1 -1
package/dist/appContext.d.ts
CHANGED
|
@@ -23,4 +23,5 @@ export declare function useServerLoaderData<T extends ServerLoaderFunc = any>():
|
|
|
23
23
|
export declare function useClientLoaderData(): {
|
|
24
24
|
data: any;
|
|
25
25
|
};
|
|
26
|
+
export declare function useLoaderData<T extends ServerLoaderFunc = any>(): Awaited<ReturnType<T>>;
|
|
26
27
|
export {};
|
package/dist/appContext.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
1
2
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
3
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
3
4
|
var _excluded = ["element"];
|
|
@@ -25,6 +26,7 @@ export function useRouteProps() {
|
|
|
25
26
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
26
27
|
return props;
|
|
27
28
|
}
|
|
29
|
+
// @deprecated Please use `useLoaderData` instead.
|
|
28
30
|
export function useServerLoaderData() {
|
|
29
31
|
var routes = useSelectedRoutes();
|
|
30
32
|
var _useAppData2 = useAppData(),
|
|
@@ -47,7 +49,6 @@ export function useServerLoaderData() {
|
|
|
47
49
|
data = _React$useState2[0],
|
|
48
50
|
setData = _React$useState2[1];
|
|
49
51
|
React.useEffect(function () {
|
|
50
|
-
// @ts-ignore
|
|
51
52
|
if (!window.__UMI_LOADER_DATA__) {
|
|
52
53
|
// 支持 ssr 降级,客户端兜底加载 serverLoader 数据
|
|
53
54
|
Promise.all(routes.filter(function (route) {
|
|
@@ -75,10 +76,19 @@ export function useServerLoaderData() {
|
|
|
75
76
|
data: data
|
|
76
77
|
};
|
|
77
78
|
}
|
|
79
|
+
|
|
80
|
+
// @deprecated Please use `useLoaderData` instead.
|
|
78
81
|
export function useClientLoaderData() {
|
|
79
82
|
var route = useRouteData();
|
|
80
83
|
var appData = useAppData();
|
|
81
84
|
return {
|
|
82
85
|
data: appData.clientLoaderData[route.route.id]
|
|
83
86
|
};
|
|
87
|
+
}
|
|
88
|
+
export function useLoaderData() {
|
|
89
|
+
var serverLoaderData = useServerLoaderData();
|
|
90
|
+
var clientLoaderData = useClientLoaderData();
|
|
91
|
+
return {
|
|
92
|
+
data: _objectSpread(_objectSpread({}, serverLoaderData.data), clientLoaderData.data)
|
|
93
|
+
};
|
|
84
94
|
}
|
package/dist/browser.js
CHANGED
|
@@ -131,9 +131,7 @@ var getBrowser = function getBrowser(opts, routesElement) {
|
|
|
131
131
|
_useState2 = _slicedToArray(_useState, 2),
|
|
132
132
|
clientLoaderData = _useState2[0],
|
|
133
133
|
setClientLoaderData = _useState2[1];
|
|
134
|
-
var _useState3 = useState(
|
|
135
|
-
// @ts-ignore
|
|
136
|
-
window.__UMI_LOADER_DATA__ || {}),
|
|
134
|
+
var _useState3 = useState(window.__UMI_LOADER_DATA__ || {}),
|
|
137
135
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
138
136
|
serverLoaderData = _useState4[0],
|
|
139
137
|
setServerLoaderData = _useState4[1];
|
|
@@ -181,9 +179,13 @@ var getBrowser = function getBrowser(opts, routesElement) {
|
|
|
181
179
|
});
|
|
182
180
|
}
|
|
183
181
|
}
|
|
182
|
+
var clientLoader = (_opts$routes$id = opts.routes[id]) === null || _opts$routes$id === void 0 ? void 0 : _opts$routes$id.clientLoader;
|
|
183
|
+
var hasClientLoader = !!clientLoader;
|
|
184
|
+
var hasServerLoader = (_opts$routes$id2 = opts.routes[id]) === null || _opts$routes$id2 === void 0 ? void 0 : _opts$routes$id2.hasServerLoader;
|
|
184
185
|
// server loader
|
|
185
186
|
// use ?. since routes patched with patchClientRoutes is not exists in opts.routes
|
|
186
|
-
|
|
187
|
+
|
|
188
|
+
if (!isFirst && hasServerLoader && !hasClientLoader && !window.__UMI_LOADER_DATA__) {
|
|
187
189
|
fetchServerLoader({
|
|
188
190
|
id: id,
|
|
189
191
|
basename: basename,
|
|
@@ -200,9 +202,32 @@ var getBrowser = function getBrowser(opts, routesElement) {
|
|
|
200
202
|
}
|
|
201
203
|
// client loader
|
|
202
204
|
// onPatchClientRoutes 添加的 route 在 opts.routes 里是不存在的
|
|
203
|
-
var
|
|
204
|
-
|
|
205
|
-
|
|
205
|
+
var hasClientLoaderDataInRoute = !!clientLoaderData[id];
|
|
206
|
+
|
|
207
|
+
// Check if hydration is needed or there's no server loader for the current route
|
|
208
|
+
var shouldHydrateOrNoServerLoader = hasClientLoader && clientLoader.hydrate || !hasServerLoader;
|
|
209
|
+
|
|
210
|
+
// Check if server loader data is missing in the global window object
|
|
211
|
+
var isServerLoaderDataMissing = hasServerLoader && !window.__UMI_LOADER_DATA__;
|
|
212
|
+
if (hasClientLoader && !hasClientLoaderDataInRoute && (shouldHydrateOrNoServerLoader || isServerLoaderDataMissing)) {
|
|
213
|
+
// ...
|
|
214
|
+
clientLoader({
|
|
215
|
+
serverLoader: function serverLoader() {
|
|
216
|
+
return fetchServerLoader({
|
|
217
|
+
id: id,
|
|
218
|
+
basename: basename,
|
|
219
|
+
cb: function cb(data) {
|
|
220
|
+
// setServerLoaderData when startTransition because if ssr is enabled,
|
|
221
|
+
// the component may being hydrated and setLoaderData will break the hydration
|
|
222
|
+
React.startTransition(function () {
|
|
223
|
+
setServerLoaderData(function (d) {
|
|
224
|
+
return _objectSpread(_objectSpread({}, d), {}, _defineProperty({}, id, data));
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
}).then(function (data) {
|
|
206
231
|
setClientLoaderData(function (d) {
|
|
207
232
|
return _objectSpread(_objectSpread({}, d), {}, _defineProperty({}, id, data));
|
|
208
233
|
});
|
|
@@ -248,9 +273,7 @@ export function renderClient(opts) {
|
|
|
248
273
|
// 为了测试,直接返回组件
|
|
249
274
|
if (opts.components) return Browser;
|
|
250
275
|
if (opts.hydrate) {
|
|
251
|
-
// @ts-ignore
|
|
252
276
|
var loaderData = window.__UMI_LOADER_DATA__ || {};
|
|
253
|
-
// @ts-ignore
|
|
254
277
|
var metadata = window.__UMI_METADATA_LOADER_DATA__ || {};
|
|
255
278
|
var hydtateHtmloptions = {
|
|
256
279
|
metadata: metadata,
|
package/dist/html.js
CHANGED
|
@@ -102,9 +102,7 @@ export function Html(_ref) {
|
|
|
102
102
|
id: mountElementId
|
|
103
103
|
}, children));
|
|
104
104
|
}
|
|
105
|
-
var serverBuildManifest = typeof window === 'undefined' ? manifest :
|
|
106
|
-
// @ts-ignore
|
|
107
|
-
window.__UMI_BUILD_MANIFEST_DATA__;
|
|
105
|
+
var serverBuildManifest = typeof window === 'undefined' ? manifest : window.__UMI_BUILD_MANIFEST_DATA__;
|
|
108
106
|
return (
|
|
109
107
|
/*#__PURE__*/
|
|
110
108
|
// FIXME: Resolve the hydrate warning for suppressHydrationWarning(3)
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
export { createBrowserHistory, createHashHistory, createMemoryHistory, type History, } from 'history';
|
|
2
2
|
export { Helmet, HelmetProvider } from 'react-helmet-async';
|
|
3
3
|
export { createSearchParams, generatePath, matchPath, matchRoutes, Navigate, NavLink, Outlet, resolvePath, useLocation, useMatch, useNavigate, useOutlet, useOutletContext, useParams, useResolvedPath, useRoutes, useSearchParams, } from 'react-router-dom';
|
|
4
|
-
export { useAppData, useClientLoaderData, useRouteProps, useSelectedRoutes, useServerLoaderData, } from './appContext';
|
|
4
|
+
export { useAppData, useClientLoaderData, useLoaderData, useRouteProps, useSelectedRoutes, useServerLoaderData, } from './appContext';
|
|
5
5
|
export { renderClient, __getRoot } from './browser';
|
|
6
6
|
export { LinkWithPrefetch as Link } from './link';
|
|
7
7
|
export { useRouteData } from './routeContext';
|
|
8
|
+
export type { ClientLoader } from './types';
|
|
8
9
|
export { __useFetcher } from './useFetcher';
|
|
9
10
|
export { withRouter, type RouteComponentProps } from './withRouter';
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { createBrowserHistory, createHashHistory, createMemoryHistory } from 'history';
|
|
2
2
|
export { Helmet, HelmetProvider } from 'react-helmet-async';
|
|
3
3
|
export { createSearchParams, generatePath, matchPath, matchRoutes, Navigate, NavLink, Outlet, resolvePath, useLocation, useMatch, useNavigate, useOutlet, useOutletContext, useParams, useResolvedPath, useRoutes, useSearchParams } from 'react-router-dom';
|
|
4
|
-
export { useAppData, useClientLoaderData, useRouteProps, useSelectedRoutes, useServerLoaderData } from "./appContext";
|
|
4
|
+
export { useAppData, useClientLoaderData, useLoaderData, useRouteProps, useSelectedRoutes, useServerLoaderData } from "./appContext";
|
|
5
5
|
export { renderClient, __getRoot } from "./browser";
|
|
6
6
|
export { LinkWithPrefetch as Link } from "./link";
|
|
7
7
|
export { useRouteData } from "./routeContext";
|
package/dist/types.d.ts
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type { IhtmlPageOpts } from '@umijs/server/dist/types';
|
|
2
|
+
import type { IhtmlPageOpts, ServerLoader } from '@umijs/server/dist/types';
|
|
3
3
|
import type { RouteMatch, RouteObject } from 'react-router-dom';
|
|
4
|
+
declare global {
|
|
5
|
+
interface Window {
|
|
6
|
+
__UMI_LOADER_DATA__: any;
|
|
7
|
+
__UMI_METADATA_LOADER_DATA__: any;
|
|
8
|
+
__UMI_BUILD_MANIFEST_DATA__: any;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
declare type ClientLoaderFunctionArgs = {
|
|
12
|
+
serverLoader: ServerLoader;
|
|
13
|
+
};
|
|
14
|
+
export declare type ClientLoader = ((args: ClientLoaderFunctionArgs) => Promise<any>) & {
|
|
15
|
+
hydrate?: boolean;
|
|
16
|
+
};
|
|
4
17
|
export interface IRouteSSRProps {
|
|
5
|
-
clientLoader?:
|
|
18
|
+
clientLoader?: ClientLoader;
|
|
6
19
|
hasServerLoader?: boolean;
|
|
7
20
|
}
|
|
8
21
|
export interface IRouteConventionExportProps {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umijs/renderer-react",
|
|
3
|
-
"version": "4.0.0-canary.
|
|
3
|
+
"version": "4.0.0-canary.20240510.1",
|
|
4
4
|
"description": "@umijs/renderer-react",
|
|
5
5
|
"homepage": "https://github.com/umijs/umi/tree/master/packages/renderer-react#readme",
|
|
6
6
|
"bugs": "https://github.com/umijs/umi/issues",
|