这是我目前拥有的
export const renderer = () => {
const content = renderToString(React.createElement(Home));
return ` <html>
<head>
</head>
<body>
<div id="root">${content}</div>
<script></script>
<script src="main-bundle.js"> </script>
</body></html> `;
};
我创建了一个 Routes 文件,我需要用 StaticRouter 包装它并将其发送到浏览器。但是我不能像这样通过它:
<StaticRouter>
<Routes />
</StaticRouter>
在 BrowserRouter 的客户端,我创建了一个应用程序组件并渲染了这个应用程序。
export const app: React.FC<appProps> = ({}) => {
return (
<BrowserRouter>
<Routes />
</BrowserRouter>
);
};
在client.tsx里面
ReactDOM.hydrate(React.createElement(app), document.getElementById("root"));
我无法在服务器端弄清楚它。我唯一在想的是创建一个像 app.tsx 这样的组件,而不是使用 StaticRouter 的 BrowserRouter,但我认为在服务器上创建一个 react 组件组件不是正确的方法。
目前我正在处理这个,但这也不是正确的方法:
const routes = React.createElement(Routes, {}, "");
const router = React.createElement(StaticRouter, {}, routes);