2025/01/15 クラスメソッドの React 事情大公開スペシャル#6 小原 一哉
アクセスまでの色々な差があるが、一旦そこは置いておくと アプリの中を回遊している間、ユーザーにとって違いはあるのか?
→ ある。データ読み込み中に対する表示方針の違い。
Web は読み込み中のデータをなるべくユーザーに届けようとして 中途半端な状態でも表示する 。
CLS の話ではありません。
(先程のスクリーンショットの例だと、CLS は発生していないが画像の読み込み中状態は表示されている)
Web は基本的に重いアセット読み込みを待たせない方針を優先してて、これは素晴らしい方針。ほとんどのサイトにおいて先程の例のような挙動が理想的だが、画像の読み込み完了を待って完成した画面をパッと表示したいシーンがある 。
→ まずは全画面にカバー(スプラッシュスクリーンなど)。その後、画面内の全画像の読み込み状態を管理し、すべて完了すればカバーを外すなど。
画面内の全画像の状態管理? うん、面倒くさいね
React ドキュメント より
<Suspense> を使うことで、子要素が読み込みを完了するまでフォールバックを表示させることができます。
<Suspense>
これで画像の読み込みを管理すれば手軽に実現できる!
https://www.youtube.com/watch?v=T8OJiJsuh20&t=3s
Promise
HTMLImageElement
onload
onerror
Promise.race
use
もちろん、すべての画像に対してサスペンドすべきではなく対象を慎重に検討する必要がある。<img loading=...> と同様の話。
<img loading=...>