Vue.js vue-waitを使用してloading中を表示する

Vue.js vue-waitを使用してloading中を表示する

vue-waitを使用して、loading中の画面表示を設定するサンプルコード

環境

  • OS  CentOS 8.0.1905 (Core)
  • node v12.13.1
  • npm 6.13.2
  • @vue/cli 4.1.1

※CentOS8にVue.jsの環境構築はこちら

Vue環境構築

下記のコマンドで構築。今回は、vueappという名前でプロジェクトを作成してます。

vue create vueapp

プロジェクト作成時は、defaultを選択してます 。

Vue CLI v4.1.1? Please pick a preset: default (babel, eslint)

vue-waitインストール

下記の手順でインストールします。

## 移動
cd vueapp

## インストール
vue i -S vue-wait

## サンプルではbootstrapを利用しているのでインストールします
npm install vue bootstrap-vue bootstrap

vue-wait使い方

まずは、src配下のmain.jsを下記のように編集します。

import Vue from 'vue'
import App from './App.vue'
import VueWait from 'vue-wait'
import BootstrapVue from 'bootstrap-vue'
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'

Vue.config.productionTip = false
Vue.use(VueWait)
Vue.use(BootstrapVue)
new Vue({
  render: h => h(App),
  wait: new VueWait(),
}).$mount('#app')

次にsrc配下のApp.vueを下記のように編集します。

<template>
  <div id="app">
    <v-wait for="loading">
      <template slot="waiting">
        <div>
        リストをロード中...
        </div>
      </template>
      <ul class="list-group" style="margin: 0 auto; width: 600px;">
        <li v-for="(item, key) in myList" :key="key" class="list-group-item">{{ item }}</li>
      </ul>
      <button @click='load' class="btn btn-primary">リストをリロード</button>
    </v-wait>
  </div>
</template>

<script>
const list = ['メロン', 'モモ', 'スイカ', 'ブドウ', 'チェリー'];

export default {
  name: 'app',  
  data() {
    return {
      myList: []
    }
  },
  methods: {
    async load() {
      
      this.$wait.start('loading');

      this.myList = await new Promise(resolve => {
        setTimeout(() => resolve(list), 3000);
      });
      
      this.$wait.end('loading');
    }
  },
  created() {
    this.load();
  }
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

起動します。

npm run serve

ブラウザから http://プライベートIP:8080 に アクセスするとlistデータをloading中に「 リストをロード中… 」という文言が表示されます。