2025.08.28 ホームページ制作

Nuxt3でuseAsyncDataを自動的に再フェッチさせる

環境

  • Nuxt3(3.17.4)
  • TypeScript
  • SSG

課題

動的ページのパンくずリストを各ページのslugなどをキーにしてAPIからデータを取得、それを基に生成するようなやり方で実装していました。これに、「ページ遷移時にちゃんと切り替わってほしい」「SSGビルドした後はAPIリクエストが飛ばないようにしたい」という要件があったのですが、、🥵

const { data: breadCrumbs } = await useAsyncData(
  'breadcrumbs',
  async () => await getBreadCrumbList(),
);

watch(
  () => route.path,
  async ()=> {
    breadCrumbs.value = await getBreadCrumbList();
  },

脳直でルートをwatchしてました。良い子は真似しないでください。
これだと、SSGビルド後もページ遷移時にAPIリクエストが飛んでしまい、よくありません🙄 watchはクライアントサイドで実行されるので当たり前ですよねえ。。。。。

編集部のおすすめ
FACE AI FIRST

AIで作れる時代にWeb制作会社は必要!?

生成AIでもサイトが作れる時代に、制作会社に相談する意味はどこにあるのか。AIが苦手な「判断」の部分を、実例とともに整理しています。

AIとWeb制作会社の記事を見る

解決策

const { data: breadCrumbs } = await useAsyncData(
  () => `breadcrumbs-${route.fullPath}`,
  () => getBreadCrumbList(),
);

キーを動的にしたことで、ルートが変わると自動的にデータが再取得されるようになりました👏
SSGビルド後はビルド時のキャッシュが使われるため、実行時に新たなAPIリクエストは発生しません🥳

参考

ちゃんと公式のドキュメントに目を通しましょう…(自戒)
https://nuxt.com/docs/3.x/api/composables/use-async-data#reactive-keys

編集部のおすすめ
SCOPE CREEP

その追加要望、今入れますか?

制作中に増えた要望を、目的・影響・費用・公開時期から判断し、修正・追加対応・公開後対応へ整理する考え方をご紹介します。

追加要望の判断基準を見る
お問い合わせ お問い合わせ
ページの先頭に戻る