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"))

このクラッジの例: https://codesandbox.io/s/hopeful-meadow-qgz6jindex.html

単一のコンポーネントをいくつかの DOM 要素でハイドレートできますか?

4

0 に答える 0