2021/01/28
NuxtJSでローディング中にオーバーレイを表示する
概要
NuxtJSベースのサイトで、画面遷移やAPI呼び出し時などのローディング時の表示ができるようにしました。
loading プロパティ - NuxtJSを参考にしています。
実装内容
コンポーネント
- ローディング中は全画面で半透明のグレーのオーバーレイを表示するようにしました
- cssはTailwind CSSのclassを使っていますが、cssをベタで書いても問題ありません
/components/Loading.vue
を作成しますtransition
で囲んでアニメーションを追加しても良いかもしれません。
<template>
<div v-if="loading" class="fixed inset-0 bg-black bg-opacity-25 z-50"></div>
</template>
<script>
export default {
data: () => ({
loading: false,
}),
methods: {
start() {
this.loading = true
},
finish() {
this.loading = false
},
},
}
</script>
設定
nuxt.conig.js
loading: '~/components/Loading.vue', // この行を追加します
APIの時のローディング制御
this.$nuxt.$loading.start()
をAPI call前に呼びます。this.$nuxt.$loading.finish()
をAPI call後に呼びます。
<template>
<div>
<button @click="submit">Submit</button>
</div>
</template>
<script>
export default {
methods: {
async submit() {
this.$nuxt.$loading.start()
try {
// apiなどを呼ぶ処理
// await this.$store.dispatch('your/submit/action')
} finally {
this.$nuxt.$loading.finish()
}
},
}
}
</script>
以上になります。便利でした。
関連する記事
Nuxt2からNuxt3への移行とNextJSとNuxt3の比較について
弊社ホームページとブログサイトをNuxt2からNuxt3ベースに移行しました。
Next.js + TailwindCSSのプロジェクト立ち上げ時のメモ
Next.js + Tailwind CSSのプロジェクト作成時の操作ログです。
Nuxt.jsからNext.jsへのリニューアルを経て思うこと
Nuxt.jsからNext.jsへフルリニューアルしたことで見えてきた個人的なメリットとデメリットを整理します
Tailwindcssで定義されている色からAndroid版の定義を自動生成する
Tailwindcssで定義されている便利な色たちをAndroidでも利用したいので、jsonで定義されている色をAndroidの変数に変換するスクリプトを作りました