最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue使用Vue.extend方法仿寫個(gè)loading加載中效果實(shí)例

 更新時(shí)間:2022年06月14日 10:30:40   作者:水冗水孚  
在vue中提供v-loading命令,用于div的loading加載,下面這篇文章主要給大家介紹了關(guān)于vue使用Vue.extend方法仿寫個(gè)loading加載中效果的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

需求描述

本文我們使用vue的extend方法實(shí)現(xiàn)一個(gè)全屏loading加載效果

  • 通過命令就可以讓彈框開啟或關(guān)閉,比如this.$showDialog()開啟,this.$hideDialog()關(guān)閉
  • 方法可以傳參更改loading中的文字
  • 也可以傳參更改loading背景色

當(dāng)然這里除了文字,背景色什么的,也可以傳遞更多的參數(shù),具體可以根據(jù)業(yè)務(wù)場景設(shè)計(jì),為了便于理解文章這里就不贅述了。

我們先看一下效果圖:

效果圖

代碼實(shí)現(xiàn)

第一步,新建loading組件

比如我們在src目錄下,新建loading文件夾用于存放loading相關(guān)文件,在這個(gè)文件夾下新建的loading.vue文件是用來做彈出框的組件

src/loading/loading.vue

<template>
  <!-- 打開彈框的動(dòng)畫 -->
  <transition name="animation">
    <div
      class="loadindWrap"
      v-if="showLoading"
      :style="{ background: backgroundColor }"
    >
      <div class="loadingContent">
        <div class="iBox">
          <i class="el-icon-loading"></i>
        </div>
        <div class="text">{{ text }}</div>
      </div>
    </div>
  </transition>
</template>

<script>
export default {
  data() {
    return {
      showLoading: false, // 控制顯示與隱藏的標(biāo)識(shí)
      backgroundColor: "rgba(0, 0, 0, 0.5)", // 默認(rèn)背景色
      text: "加載中...", // 默認(rèn)文字
    };
  },
};
</script>

<style lang="less" scoped>
.loadindWrap {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  .loadingContent {
    color: rgb(160, 233, 66);
    text-align: center;
    .iBox {
      margin-bottom: 6px;
      i {
        font-size: 20px;
        color: #bfa;
      }
    }
  }
}
// 加一個(gè)過渡效果
.animation-enter, .animation-leave-to { opacity: 0;}
.animation-enter-active, .animation-leave-active { transition: opacity 0.6s; }
</style>

第二步,新建index.js文件

比如我們在src目錄下,新建的loading文件夾中再新建一個(gè)index.js文件用來書寫相應(yīng)js代碼,用于控制loading彈框。

src/loading/index.js

// 引入vue
import Vue from 'vue'

// 引入loading組件
import dialog from './loading';

// 通過Vue的extend方法繼承這個(gè)引入的dialog組件,繼承后會(huì)返回一個(gè)vue子類,需要使用實(shí)例化即可
const Dialog = Vue.extend(dialog);

//創(chuàng)建實(shí)例并且掛載到一個(gè)div上
const app = new Dialog().$mount(document.createElement('div'))

// 打開彈框函數(shù)
function showDialog(options) {
    //初始化調(diào)用傳遞過來的參數(shù)賦值更改組件內(nèi)內(nèi)部值
    for (let key in options) {
        app[key] = options[key];
    }
    // 讓其顯示
    app.showLoading = true
    // 并將其插入body中
    document.body.appendChild(app.$el);
}

// 關(guān)閉彈框函數(shù)
function hideDialog() {
    // 因?yàn)槭莢-if去控制,所以將標(biāo)識(shí)showLoading置為false,就會(huì)自動(dòng)把彈框dom刪掉
    app.showLoading = false
}

// 將打開函數(shù)和關(guān)閉函數(shù)都掛載到Vue原型上,方便我們調(diào)用
Vue.prototype.$showDialog = showDialog;
Vue.prototype.$hideDialog = hideDialog;

第三步,在main.js中引入之

main.js

// ...

// 最后要在main.js中引入,表示使用之,這樣在任意組件中都可以執(zhí)行對(duì)應(yīng)方法了
import './loading/index.js'

new Vue({
  render: h => h(App),
  router,
  store // 掛載上去
}).$mount('#app')

第四步,命令式調(diào)用

<template>
  <div class="aBox">
    <el-button @click="show">點(diǎn)擊出現(xiàn)加載中彈框</el-button>
  </div>
</template>

<script>
export default {
  methods: {
    // 通過指令的方式即可調(diào)用,很方便
    show() {
      this.$showDialog({
        text: "瀏覽器在加載中哇...",
      });
      // 模擬發(fā)請求,過了1.5秒鐘再將其關(guān)閉
      setTimeout(() => {
        this.$hideDialog();
      }, 1500);
    },
  },
};
</script>

Vue.extend方法的理解

我們知道,無論哪種程序語言,或多或少都會(huì)有封裝、繼承、多態(tài)的思想,而Vue.extend方法就是Vue的一個(gè)用于繼承組件的方法。官方是這樣定義的:使用基礎(chǔ) Vue 構(gòu)造器,創(chuàng)建一個(gè)“子類”。參數(shù)是一個(gè)包含組件選項(xiàng)的對(duì)象。

構(gòu)造器也可以理解為是一個(gè)類,既然是一個(gè)類,就可以去實(shí)例化對(duì)象,extend方法可以實(shí)例一個(gè)組件對(duì)象,而這個(gè)組件對(duì)象擁有我們最初定義的loading.vue所有屬性和方法。所以我們將這個(gè)組件對(duì)象掛載到一個(gè)div上,讓其有一個(gè)著落,即成為dom元素。

最終,當(dāng)我們需要彈框出現(xiàn)的時(shí)候,把這個(gè)dom元素插入到文檔對(duì)象上,不需要的時(shí)候,再將其刪除掉。這樣就實(shí)現(xiàn)了,打開和關(guān)閉彈框的效果。

總結(jié)

到此這篇關(guān)于vue使用Vue.extend方法仿寫個(gè)loading加載中效果實(shí)例的文章就介紹到這了,更多相關(guān)vue Vue.extend仿loading加載中內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue中uni-app 實(shí)現(xiàn)小程序登錄注冊功能

    vue中uni-app 實(shí)現(xiàn)小程序登錄注冊功能

    這篇文章主要介紹了uni-app 實(shí)現(xiàn)小程序登錄注冊功能,文中給大家介紹了實(shí)現(xiàn)思路,以及vuex和本地緩存的區(qū)別,需要的朋友可以參考下
    2019-10-10
  • UniApp在Vue3下使用setup語法糖創(chuàng)建和使用自定義組件的操作方法

    UniApp在Vue3下使用setup語法糖創(chuàng)建和使用自定義組件的操作方法

    通過defineProps定義屬性,defineEmits定義事件,computed創(chuàng)建計(jì)算屬性,emitEvent方法觸發(fā)事件,在其他組件中導(dǎo)入并使用這些自定義組件,傳遞屬性和監(jiān)聽事件,實(shí)現(xiàn)組件的復(fù)用性和可維護(hù)性,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • vue自定義指令實(shí)現(xiàn)v-tap插件

    vue自定義指令實(shí)現(xiàn)v-tap插件

    這篇文章主要為大家詳細(xì)介紹了vue自定義指令實(shí)現(xiàn)v-tap插件的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 通過實(shí)例解析chrome如何在mac環(huán)境中安裝vue-devtools插件

    通過實(shí)例解析chrome如何在mac環(huán)境中安裝vue-devtools插件

    這篇文章主要介紹了通過實(shí)例解析chrome如何在mac環(huán)境中安裝vue-devtools插件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • elementUI?el-radio?無法點(diǎn)擊的問題解決

    elementUI?el-radio?無法點(diǎn)擊的問題解決

    本文主要介紹了elementUI?el-radio?無法點(diǎn)擊的問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Vue中自定義日志打印插件問題

    Vue中自定義日志打印插件問題

    這篇文章主要介紹了Vue中自定義日志打印插件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue父組件向子組件動(dòng)態(tài)傳值的兩種方法

    vue父組件向子組件動(dòng)態(tài)傳值的兩種方法

    這篇文章主要介紹了vue父組件向子組件動(dòng)態(tài)傳值的兩種方法 ,需要的朋友可以參考下
    2017-11-11
  • Vue-cli3項(xiàng)目引入Typescript的實(shí)現(xiàn)方法

    Vue-cli3項(xiàng)目引入Typescript的實(shí)現(xiàn)方法

    這篇文章主要介紹了Vue-cli3項(xiàng)目引入Typescript的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • vue3配置router路由并實(shí)現(xiàn)頁面跳轉(zhuǎn)功能

    vue3配置router路由并實(shí)現(xiàn)頁面跳轉(zhuǎn)功能

    這篇文章主要介紹了vue3配置router路由并實(shí)現(xiàn)頁面跳轉(zhuǎn),本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • vue終極性能優(yōu)化方案(解決首頁加載慢問題)

    vue終極性能優(yōu)化方案(解決首頁加載慢問題)

    最近在做項(xiàng)目中前端采用Vue技術(shù),發(fā)現(xiàn)首頁加載速度非常之慢,下面這篇文章主要給大家介紹了關(guān)于vue終極性能優(yōu)化方案,主要解決首頁加載慢問題,需要的朋友可以參考下
    2022-02-02

最新評(píng)論

天台县| 搜索| 芜湖市| 开远市| 鹿邑县| 大足县| 喜德县| 崇明县| 若羌县| 老河口市| 和林格尔县| 樟树市| 六盘水市| 恩施市| 青河县| 洪雅县| 巧家县| 萨嘎县| 邹城市| 金秀| 延吉市| 新昌县| 凭祥市| 营山县| 娄底市| 伊宁县| 柘城县| 井研县| 卢湾区| 吴忠市| 兴和县| 台安县| 沿河| 荔浦县| 闵行区| 富蕴县| 新乡县| 高邮市| 开化县| 邛崃市| 黄浦区|