我的情况:我有一个页面预加载器,但它使用 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.hydrate
React.render
React.hydrate
我相信有一个功能可以部分水合单个组件(比如组件“使用这个 DOM”而不是制作相同的新元素),但我找不到它。
例如:
const loader = ReactDOM.someMagicFunction(<MyCustomPreloader />, document.getElementById("loader"))
这个 kludge 的例子:https ://codesandbox.io/s/hopeful-meadow-qgz6j描述:我有“预渲染”加载器index.html
,并在 loooong 加载得到它并使用它(这个 DOM 元素)后做出反应。
我可以用一些 DOM 元素水合单个组件吗?