@umijs/renderer-react 4.0.29 → 4.0.30
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/browser.d.ts +2 -55
- package/dist/browser.js +25 -76
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.js +11 -2
- package/package.json +2 -1
package/dist/browser.d.ts
CHANGED
|
@@ -4,69 +4,16 @@ import ReactDOM from 'react-dom/client';
|
|
|
4
4
|
import { IRouteComponents, IRoutesById } from './types';
|
|
5
5
|
export declare function __getRoot(): ReactDOM.Root | null;
|
|
6
6
|
export declare function Routes(): React.ReactElement<any, string | React.JSXElementConstructor<any>> | null;
|
|
7
|
-
|
|
8
|
-
* umi 渲染需要的配置,在node端调用的哦
|
|
9
|
-
*/
|
|
10
|
-
export declare type RenderClientOpts = {
|
|
11
|
-
/**
|
|
12
|
-
* 配置 webpack 的 publicPath。
|
|
13
|
-
* @doc https://umijs.org/docs/api/config#publicpath
|
|
14
|
-
*/
|
|
7
|
+
export declare function renderClient(opts: {
|
|
15
8
|
publicPath?: string;
|
|
16
|
-
/**
|
|
17
|
-
* 是否是 runtimePublicPath
|
|
18
|
-
* @doc https://umijs.org/docs/api/config#runtimepublicpath
|
|
19
|
-
*/
|
|
20
9
|
runtimePublicPath?: boolean;
|
|
21
|
-
/**
|
|
22
|
-
* react dom 渲染的的目标 dom
|
|
23
|
-
* @doc 一般不需要改,微前端的时候会变化
|
|
24
|
-
*/
|
|
25
10
|
rootElement?: HTMLElement;
|
|
26
|
-
/**
|
|
27
|
-
* 当前的路由配置
|
|
28
|
-
*/
|
|
29
11
|
routes: IRoutesById;
|
|
30
|
-
/**
|
|
31
|
-
* 当前的路由对应的dom组件
|
|
32
|
-
*/
|
|
33
12
|
routeComponents: IRouteComponents;
|
|
34
|
-
/**
|
|
35
|
-
* 插件的执行实例
|
|
36
|
-
*/
|
|
37
13
|
pluginManager: any;
|
|
38
|
-
/**
|
|
39
|
-
* 设置路由 base,部署项目到非根目录下时使用。
|
|
40
|
-
* @doc https://umijs.org/docs/api/config#base
|
|
41
|
-
*/
|
|
42
14
|
basename?: string;
|
|
43
|
-
/**
|
|
44
|
-
* loading 中展示的组件 dom
|
|
45
|
-
*/
|
|
46
15
|
loadingComponent?: React.ReactNode;
|
|
47
|
-
/**
|
|
48
|
-
* react router 的 history,用于控制列表渲染
|
|
49
|
-
* @doc https://umijs.org/docs/api/config#history
|
|
50
|
-
* 有多种不同的类型,测试的时候建议用 内存路由,默认是 browserHistory
|
|
51
|
-
*/
|
|
52
16
|
history: History;
|
|
53
|
-
/**
|
|
54
|
-
* ssr 的配置
|
|
55
|
-
*/
|
|
56
17
|
hydrate?: boolean;
|
|
57
|
-
/**
|
|
58
|
-
* 直接返回组件,是为了方便测试
|
|
59
|
-
*/
|
|
60
|
-
components?: boolean;
|
|
61
|
-
/**
|
|
62
|
-
* 启用 react-router 5 兼容模式。
|
|
63
|
-
* 此模式下,路由组件的 props 会包含 location、match、history 和 params 属性,和 react-router 5 的保持一致。
|
|
64
|
-
*/
|
|
65
18
|
reactRouter5Compat?: boolean;
|
|
66
|
-
};
|
|
67
|
-
/**
|
|
68
|
-
* 执行 react dom 的 render 方法
|
|
69
|
-
* @param {RenderClientOpts} opts - 插件相关的配置
|
|
70
|
-
* @returns void
|
|
71
|
-
*/
|
|
72
|
-
export declare function renderClient(opts: RenderClientOpts): (() => JSX.Element) | undefined;
|
|
19
|
+
}): void;
|
package/dist/browser.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
2
|
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
3
|
-
import _createForOfIteratorHelper from "@babel/runtime/helpers/createForOfIteratorHelper";
|
|
4
3
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
5
4
|
import React, { useCallback, useEffect, useState } from 'react'; // compatible with < react@18 in @umijs/preset-umi/src/features/react
|
|
6
5
|
|
|
@@ -13,11 +12,6 @@ var root = null; // react 18 some scenarios need unmount such as micro app
|
|
|
13
12
|
export function __getRoot() {
|
|
14
13
|
return root;
|
|
15
14
|
}
|
|
16
|
-
/**
|
|
17
|
-
* 这个组件的功能是 history 发生改变的时候重新触发渲染
|
|
18
|
-
* @param props
|
|
19
|
-
* @returns
|
|
20
|
-
*/
|
|
21
15
|
|
|
22
16
|
function BrowserRoutes(props) {
|
|
23
17
|
var history = props.history;
|
|
@@ -67,24 +61,9 @@ export function Routes() {
|
|
|
67
61
|
|
|
68
62
|
return useRoutes(clientRoutes);
|
|
69
63
|
}
|
|
70
|
-
|
|
71
|
-
* umi 渲染需要的配置,在node端调用的哦
|
|
72
|
-
*/
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* umi max 所需要的所有插件列表,用于获取provide
|
|
76
|
-
*/
|
|
77
|
-
var UMI_CLIENT_RENDER_REACT_PLUGIN_LIST = [// Lowest to the highest priority
|
|
78
|
-
'innerProvider', 'i18nProvider', 'accessProvider', 'dataflowProvider', 'outerProvider', 'rootContainer'];
|
|
79
|
-
/**
|
|
80
|
-
*
|
|
81
|
-
* @param {RenderClientOpts} opts - 插件相关的配置
|
|
82
|
-
* @param {React.ReactElement} routesElement 需要渲染的 routers,为了方便测试注入才导出
|
|
83
|
-
* @returns @returns A function that returns a React component.
|
|
84
|
-
*/
|
|
85
|
-
|
|
86
|
-
var getBrowser = function getBrowser(opts, routesElement) {
|
|
64
|
+
export function renderClient(opts) {
|
|
87
65
|
var basename = opts.basename || '/';
|
|
66
|
+
var rootElement = opts.rootElement || document.getElementById('root');
|
|
88
67
|
var clientRoutes = createClientRoutes({
|
|
89
68
|
routesById: opts.routes,
|
|
90
69
|
routeComponents: opts.routeComponents,
|
|
@@ -104,34 +83,21 @@ var getBrowser = function getBrowser(opts, routesElement) {
|
|
|
104
83
|
routes: opts.routes,
|
|
105
84
|
clientRoutes: clientRoutes,
|
|
106
85
|
history: opts.history
|
|
107
|
-
},
|
|
108
|
-
|
|
109
|
-
var
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
rootContainer
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
plugin: opts.pluginManager
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* umi 增加完 Provide 的 react dom,可以直接交给 react-dom 渲染
|
|
128
|
-
* @returns {React.ReactElement}
|
|
129
|
-
*/
|
|
130
|
-
|
|
131
|
-
} catch (err) {
|
|
132
|
-
_iterator.e(err);
|
|
133
|
-
} finally {
|
|
134
|
-
_iterator.f();
|
|
86
|
+
}, /*#__PURE__*/React.createElement(Routes, null));
|
|
87
|
+
|
|
88
|
+
for (var _i = 0, _arr = [// Lowest to the highest priority
|
|
89
|
+
'innerProvider', 'i18nProvider', 'accessProvider', 'dataflowProvider', 'outerProvider', 'rootContainer']; _i < _arr.length; _i++) {
|
|
90
|
+
var key = _arr[_i];
|
|
91
|
+
rootContainer = opts.pluginManager.applyPlugins({
|
|
92
|
+
type: 'modify',
|
|
93
|
+
key: key,
|
|
94
|
+
initialValue: rootContainer,
|
|
95
|
+
args: {
|
|
96
|
+
routes: opts.routes,
|
|
97
|
+
history: opts.history,
|
|
98
|
+
plugin: opts.pluginManager
|
|
99
|
+
}
|
|
100
|
+
});
|
|
135
101
|
}
|
|
136
102
|
|
|
137
103
|
var Browser = function Browser() {
|
|
@@ -205,7 +171,6 @@ var getBrowser = function getBrowser(opts, routesElement) {
|
|
|
205
171
|
}).then(function (data) {
|
|
206
172
|
// setServerLoaderData when startTransition because if ssr is enabled,
|
|
207
173
|
// the component may being hydrated and setLoaderData will break the hydration
|
|
208
|
-
// @ts-ignore
|
|
209
174
|
React.startTransition(function () {
|
|
210
175
|
setServerLoaderData(function (d) {
|
|
211
176
|
return _objectSpread(_objectSpread({}, d), {}, _defineProperty({}, id, data));
|
|
@@ -249,31 +214,15 @@ var getBrowser = function getBrowser(opts, routesElement) {
|
|
|
249
214
|
}, rootContainer);
|
|
250
215
|
};
|
|
251
216
|
|
|
252
|
-
return Browser;
|
|
253
|
-
};
|
|
254
|
-
/**
|
|
255
|
-
* 执行 react dom 的 render 方法
|
|
256
|
-
* @param {RenderClientOpts} opts - 插件相关的配置
|
|
257
|
-
* @returns void
|
|
258
|
-
*/
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
export function renderClient(opts) {
|
|
262
|
-
var rootElement = opts.rootElement || document.getElementById('root');
|
|
263
|
-
var Browser = getBrowser(opts, /*#__PURE__*/React.createElement(Routes, null)); // 为了测试,直接返回组件
|
|
264
|
-
|
|
265
|
-
if (opts.components) return Browser;
|
|
266
|
-
|
|
267
217
|
if (opts.hydrate) {
|
|
268
218
|
ReactDOM.hydrateRoot(rootElement, /*#__PURE__*/React.createElement(Browser, null));
|
|
269
|
-
|
|
219
|
+
} else {
|
|
220
|
+
if (ReactDOM.createRoot) {
|
|
221
|
+
root = ReactDOM.createRoot(rootElement);
|
|
222
|
+
root.render( /*#__PURE__*/React.createElement(Browser, null));
|
|
223
|
+
} else {
|
|
224
|
+
// @ts-ignore
|
|
225
|
+
ReactDOM.render( /*#__PURE__*/React.createElement(Browser, null), rootElement);
|
|
226
|
+
}
|
|
270
227
|
}
|
|
271
|
-
|
|
272
|
-
if (ReactDOM.createRoot) {
|
|
273
|
-
ReactDOM.createRoot(rootElement).render( /*#__PURE__*/React.createElement(Browser, null));
|
|
274
|
-
return;
|
|
275
|
-
} // @ts-ignore
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
ReactDOM.render( /*#__PURE__*/React.createElement(Browser, null), rootElement);
|
|
279
228
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { createBrowserHistory, createHashHistory, createMemoryHistory, type History, } from 'history';
|
|
2
2
|
export { createSearchParams, generatePath, matchPath, matchRoutes, Navigate, NavLink, Outlet, resolvePath, useLocation, useMatch, useNavigate, useOutlet, useOutletContext, useParams, useResolvedPath, useRoutes, useSearchParams, } from 'react-router-dom';
|
|
3
|
+
export { Helmet } from 'react-helmet-async';
|
|
3
4
|
export { useAppData, useClientLoaderData, useServerLoaderData, } from './appContext';
|
|
4
5
|
export { renderClient, __getRoot } from './browser';
|
|
5
6
|
export { LinkWithPrefetch as Link } from './link';
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { createBrowserHistory, createHashHistory, createMemoryHistory } from 'history';
|
|
2
2
|
export { createSearchParams, generatePath, matchPath, matchRoutes, Navigate, NavLink, Outlet, resolvePath, useLocation, useMatch, useNavigate, useOutlet, useOutletContext, useParams, useResolvedPath, useRoutes, useSearchParams } from 'react-router-dom';
|
|
3
|
+
export { Helmet } from 'react-helmet-async';
|
|
3
4
|
export { useAppData, useClientLoaderData, useServerLoaderData } from "./appContext";
|
|
4
5
|
export { renderClient, __getRoot } from "./browser";
|
|
5
6
|
export { LinkWithPrefetch as Link } from "./link";
|
package/dist/server.d.ts
CHANGED
package/dist/server.js
CHANGED
|
@@ -2,11 +2,18 @@ import _regeneratorRuntime from "@babel/runtime/helpers/regeneratorRuntime";
|
|
|
2
2
|
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
3
3
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
4
4
|
import React from 'react';
|
|
5
|
+
import { HelmetProvider } from 'react-helmet-async';
|
|
5
6
|
import { StaticRouter } from 'react-router-dom/server';
|
|
6
7
|
import { AppContext } from "./appContext";
|
|
7
8
|
import { Routes } from "./browser";
|
|
8
9
|
import { createClientRoutes } from "./routes";
|
|
9
|
-
//
|
|
10
|
+
// store helmet data
|
|
11
|
+
var helmetContext = {}; // get helmet context
|
|
12
|
+
|
|
13
|
+
export function getHelmetContext() {
|
|
14
|
+
return helmetContext;
|
|
15
|
+
} // Get the root React component for ReactDOMServer.renderToString
|
|
16
|
+
|
|
10
17
|
export function getClientRootComponent(_x) {
|
|
11
18
|
return _getClientRootComponent.apply(this, arguments);
|
|
12
19
|
}
|
|
@@ -44,6 +51,8 @@ function _getClientRootComponent() {
|
|
|
44
51
|
return _context.abrupt("return", /*#__PURE__*/React.createElement(Html, {
|
|
45
52
|
loaderData: opts.loaderData,
|
|
46
53
|
manifest: opts.manifest
|
|
54
|
+
}, /*#__PURE__*/React.createElement(HelmetProvider, {
|
|
55
|
+
context: helmetContext
|
|
47
56
|
}, /*#__PURE__*/React.createElement(AppContext.Provider, {
|
|
48
57
|
value: {
|
|
49
58
|
routes: opts.routes,
|
|
@@ -54,7 +63,7 @@ function _getClientRootComponent() {
|
|
|
54
63
|
clientLoaderData: {},
|
|
55
64
|
serverLoaderData: opts.loaderData
|
|
56
65
|
}
|
|
57
|
-
}, rootContainer)));
|
|
66
|
+
}, rootContainer))));
|
|
58
67
|
|
|
59
68
|
case 6:
|
|
60
69
|
case "end":
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umijs/renderer-react",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.30",
|
|
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",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"@babel/runtime": "7.18.9",
|
|
26
26
|
"@loadable/component": "5.15.2",
|
|
27
27
|
"history": "5.3.0",
|
|
28
|
+
"react-helmet-async": "1.3.0",
|
|
28
29
|
"react-router-dom": "6.3.0"
|
|
29
30
|
},
|
|
30
31
|
"devDependencies": {
|