私の場合: ページのプリローダーがありますが、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"))
このクラッジの例: https://codesandbox.io/s/hopeful-meadow-qgz6jindex.html
単一のコンポーネントをいくつかの DOM 要素でハイドレートできますか?