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

基于vue寫一個全局Message組件的實現(xiàn)

 更新時間:2019年08月15日 14:07:53   作者:pppercyWang  
這篇文章主要介紹了基于vue寫一個全局Message組件的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

不知道大家在用一些UI框架,比如Element-ui的時候,有沒有覺得一些全局組件。this.$message(),this.Toast()等,用起來很爽。他們不像其他的組件,需要去導入,去注冊。麻煩的很。

看了Element的源碼,自己也擼了一個。其中包括了以前沒有接觸過的插件知識,哎,感覺自己對Vue的理解還是不夠,只停留在了使用的這階段。需要更多的往深層次的地方去鉆。不說廢話了,直接上代碼。

效果演示


全局組件需要一個index.js文件去注冊

BlogMessage.vue

這里的script是用ts寫的。大家只需將這里稍做修改就可以了

<template>
 <transition name="slide">
  <div class="message-wrap" :class="type" v-if="visible">
   <div class="content">{{content}}</div>
  </div>
 </transition>
</template>
<script lang='ts'>
import { Component, Vue, Watch, Prop } from "vue-property-decorator";
@Component({
 components: {}
})
export default class extends Vue {
 private content: string = "";
 private visible: boolean = false;
 private type: string = "info"; // 'success','error'
 private startTimer() {
  window.setTimeout(() => {
   this.visible = false;
  }, 3000);
 }
 private mounted() {
  this.startTimer();
 }
}
</script>
<style scoped lang="scss">
.message-wrap {
 position: fixed;
 background-color: #44b0f3;
 color: #ffffff;
 left: 40%;
 width: 20%;
 top: 25px;
 height: 40px;
 z-index: 1001;
 border-radius: 4px;
 text-align: center;
 border: 1px solid #ebeef5;
 .content {
  line-height: 40px;
 }
}
.error {
 background-color: #fef0f0;
 color: #f56c6c;
}
.success {
 background-color: #f0f9eb;
 color: #67c23a;
}
.slide-enter-active,
.slide-leave-active {
 transition: all 0.3s cubic-bezier(1, 0.5, 0.8, 1);
 transition: all 0.2s ease;
}
.slide-enter,
.slide-leave-to {
 transform: translateY(-20px);
 opacity: 0;
}
</style>

index.js

import Vue from 'vue'
import BlogMessage from './BlogMessage.vue'
const MessageBox = Vue.extend(BlogMessage) // 創(chuàng)建的是一個組件構造器,不是實例
const Message = {
 install: (options, type, duration) => {
  if (options === undefined || options === null) {
   options = {
    content: ''
   }
  } else if (typeof options === 'string' || typeof options === 'number') {
   options = {
    content: options
   }
   if (type != undefined && options != null) {
    options.type = type;
   }
  }
  let instance = new MessageBox({
   data: options
  }).$mount()
  document.body.appendChild(instance.$el) // 添加dom元素
  Vue.nextTick(() => { // dom元素渲染完成后執(zhí)行回調
   instance.visible = true
  })
 }
}
Vue.prototype.$message = Message.install;
['success', 'error'].forEach(type => {
 Vue.prototype.$message[type] = (content) => {
  return Vue.prototype.$message(content, type)
 }
})
export default Message

使用組件

1.全局注冊

import Vue from 'vue';
import Message from '@/components/common/message';
Vue.use(Message);

2.調用方法

 private test1() {
  this.$message("這是一條普通消息");
 }
 private test2() {
  this.$message.success("這是一條成功消息");
  // this.$message("這是一條成功消息", "success");
 }
 private test3() {
  this.$message.error("這是一條失敗消息");
  // this.$message("這是一條失敗消息", "error");
 }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • vant中的toast層級改變操作

    vant中的toast層級改變操作

    這篇文章主要介紹了vant中的toast層級改變操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue-router中query和params的區(qū)別解析

    vue-router中query和params的區(qū)別解析

    vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用于構建單頁面應用,這篇文章主要介紹了vue-router中query和params的區(qū)別 ,需要的朋友可以參考下
    2022-10-10
  • Vue3中props和emit的使用方法詳解

    Vue3中props和emit的使用方法詳解

    props是Vue中最常見的父子通信方式,使用起來也比較簡單,下面這篇文章主要給大家介紹了關于Vue3中props和emit的使用方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-03-03
  • 在Vue中實現(xiàn)對文件的壓縮和解壓縮功能

    在Vue中實現(xiàn)對文件的壓縮和解壓縮功能

    在前端開發(fā)中,文件的壓縮和解壓縮是經(jīng)常需要用到的功能,尤其是在需要上傳和下載文件的場景下,文件壓縮可以減小文件大小,加快文件傳輸速度,提高用戶體驗,本文將介紹在Vue項目中如何進行文件的壓縮和解壓縮,需要的朋友可以參考下
    2023-11-11
  • vue-列表下詳情的展開與折疊案例

    vue-列表下詳情的展開與折疊案例

    這篇文章主要介紹了vue-列表下詳情的展開與折疊案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 深入探究Vue中三種不同的props用法

    深入探究Vue中三種不同的props用法

    Vue?的核心功能之一在于?props?的使用,props?是我們在?Vue?中從父組件到子組件傳遞數(shù)據(jù)的方式,但并非所有?props?都是一樣的,本文我們會深入學習這三種不同類型的?props,看看它們有何不同,以及何時使用它們,需要的朋友可以參考下
    2024-03-03
  • vuex如何在非組件中調用mutations方法

    vuex如何在非組件中調用mutations方法

    這篇文章主要介紹了vuex如何在非組件中調用mutations方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Vue reactive函數(shù)實現(xiàn)流程詳解

    Vue reactive函數(shù)實現(xiàn)流程詳解

    一個基本類型的數(shù)據(jù),想要變成響應式數(shù)據(jù),那么需要通過ref函數(shù)包裹,而如果是一個對象的話,那么需要使用reactive函數(shù),這篇文章主要介紹了Vue reactive函數(shù)
    2023-01-01
  • vue cli4.0 如何配置環(huán)境變量

    vue cli4.0 如何配置環(huán)境變量

    這篇文章主要介紹了vue cli4.0 如何配置環(huán)境變量,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • React組件通信之路由傳參(react-router-dom)

    React組件通信之路由傳參(react-router-dom)

    本文主要介紹了React組件通信之路由傳參(react-router-dom),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10

最新評論

兴化市| 乡宁县| 双柏县| 襄汾县| 沧源| 本溪| 龙山县| 通化市| 乡城县| 东乌珠穆沁旗| 双柏县| 沧州市| 延津县| 武定县| 宁明县| 丁青县| 垦利县| 阜康市| 关岭| 墨江| 兴国县| 墨脱县| 普洱| 米脂县| 凤山县| 遂平县| 汝阳县| 遂溪县| 太和县| 宽甸| 岗巴县| 永川市| 台州市| 镇宁| 舞钢市| 沧州市| 罗江县| 南陵县| 社旗县| 北京市| 遂川县|