1

我的情况:我有一个页面预加载器,但它使用 react 并且很长(第一次绘制)。SSR可以解决这个问题,但是太难了(我的意思是通过全SSR解决这个问题)。

我想使用类似 React.hydrate 的东西,但只用于一个组件。我有渲染的<MyCustomPreloader />组件<div class="loader" />,但渲染延迟很长(加载页面后)。

我的想法:例如,index.html我可以在内部制作<div class="loader" />第一次绘画时可见的内容。主要问题<MyCustomPreloader />是我已经渲染了 div,他必须使用它而不创建新的。

我可以在组件中找到必要的 DOM 并使用它,但这意味着放弃 React 并继续直接使用 DOM 组件。

我尝试手动添加和使用,<div class="loader" />而不是它的工作原理!但是尝试在装载机前后对每个组件进行水合,而这个解决方案是杂乱无章的。<div id="root"></div>React.hydrateReact.renderReact.hydrate

我相信有一个功能可以部分水合单个组件(比如组件“使用这个 DOM”而不是制作相同的新元素),但我找不到它。

例如:

const loader = ReactDOM.someMagicFunction(<MyCustomPreloader />, document.getElementById("loader"))

这个 kludge 的例子:https ://codesandbox.io/s/hopeful-meadow-qgz6j描述:我有“预渲染”加载器index.html,并在 loooong 加载得到它并使用它(这个 DOM 元素)后做出反应。

我可以用一些 DOM 元素水合单个组件吗?

4

0 回答 0