is for informational purposes only. GROWTH VERSE Co., Ltd. makes no warranties, express or implied, in this summary. 段階的なレンダリングを実装してUXを最大化するためのTips ソフトウェアエンジニア@株式会社GROWTH VERSE 杉浦伶/Rachel
is for informational purposes only. GROWTH VERSE Co., Ltd. makes no warranties, express or implied, in this summary. ソフトウェアエンジニア@株式会社GROWTH VERSE Github: @reibomaru X: @rachel_camper 自己紹介 杉浦伶/Rachel
is for informational purposes only. GROWTH VERSE Co., Ltd. makes no warranties, express or implied, in this summary. TL;DR • 段階的にコンテンツを表示する実装でLoading Stateの制御が複雑になる場 合にSuspenseが有効 • Tip1: Imgタグでの画像のフェッチをSuspenseで制御するためにBlobを利用 する • Tip2: フェッチのwaterfallを防ぐために、Promiseをpropsで受け渡す
is for informational purposes only. GROWTH VERSE Co., Ltd. makes no warranties, express or implied, in this summary. アジェンダ・話さないこと アジェンダ • 題材にするダッシュボードの説明 • Suspenseを使った実装のTips a. 画像フェッチの制御 b. waterfallの解決 話さないこと • Suspenseの使い方の説明 • Suspense以外の段階表示の実装 • 初期表示以外でのLoading State UIの 実装 • onErrorCaptured()等でのエラーハンドリ ング • Nuxt.jsを使ったSSRと組み合わせた段階 的レンダリング
is for informational purposes only. GROWTH VERSE Co., Ltd. makes no warranties, express or implied, in this summary. 題材: ダッシュボード 要件 • データのフェッチを待機している コンポーネントはスケルトンを表 示 • アイコン画像は全ての読み込み が終わったタイミングで一斉にス ケルトンを解除 • 各カードのチャートはフェッチが 完了したものから順次表示
is for informational purposes only. GROWTH VERSE Co., Ltd. makes no warranties, express or implied, in this summary. 題材: ダッシュボード 要件 • データのフェッチを待機している コンポーネントはスケルトンを表 示 • アイコン画像は全ての読み込み が終わったタイミングで一斉にス ケルトンを解除 • 各カードのチャートはフェッチが 完了したものから順次表示
is for informational purposes only. GROWTH VERSE Co., Ltd. makes no warranties, express or implied, in this summary. Tip2: データフェッチのwaterfallを防ぐ 要件 • データのフェッチを待機している コンポーネントはスケルトンを表 示 • アイコン画像は全ての読み込み が終わったタイミングで一斉にス ケルトンを解除 • チャートはフェッチが完了したも のから順次表示
is for informational purposes only. GROWTH VERSE Co., Ltd. makes no warranties, express or implied, in this summary. App UserCardList: ユーザー一覧フェッチ Tip2: データフェッチのwaterfallを防ぐ UserCardContainer Avatarのフェッチ UserCard ScoreChart Scoreデータのフェッチ UserCardContainer Avatarのフェッチ UserCard ScoreChart Scoreデータのフェッチ
is for informational purposes only. GROWTH VERSE Co., Ltd. makes no warranties, express or implied, in this summary. Tip2: データフェッチのwaterfallを防ぐ UserCardContainerのマウント
is for informational purposes only. GROWTH VERSE Co., Ltd. makes no warranties, express or implied, in this summary. App UserCardList: ユーザー一覧フェッチ Tip2: データフェッチのwaterfallを防ぐ UserCardContainer: Avatarのフェッチ Scoreデータのフェッチ UserCard ScoreChart UserCardContainer: Avatarのフェッチ Scoreデータのフェッチ UserCard ScoreChart Promise Promise
is for informational purposes only. GROWTH VERSE Co., Ltd. makes no warranties, express or implied, in this summary. Tip2: データフェッチのwaterfallを防ぐ UserCardContainerのマウント
is for informational purposes only. GROWTH VERSE Co., Ltd. makes no warranties, express or implied, in this summary. まとめ • Blobを用いることでimgタグの画像のフェッチもSuspenseで制御できる • 親コンポーネントで作成したPromiseをpropsで受け渡し、子コンポーネントで Promiseを解決することでデータフェッチのwaterfallを回避できる 本日用いたコード: https://github.com/reibomaru/vue-fes-2024