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

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

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

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

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

效果演示


全局組件需要一個(gè)index.js文件去注冊(cè)

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)建的是一個(gè)組件構(gòu)造器,不是實(shí)例
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í)行回調(diào)
   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.全局注冊(cè)

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

2.調(diào)用方法

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vant中的toast層級(jí)改變操作

    vant中的toast層級(jí)改變操作

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

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

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

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

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

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

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

    vue-列表下詳情的展開(kāi)與折疊案例

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

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

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

    vuex如何在非組件中調(diào)用mutations方法

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

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

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

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

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

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

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

最新評(píng)論

合作市| 乌兰浩特市| 远安县| 赣榆县| 静乐县| 增城市| 鱼台县| 罗甸县| 通州市| 莎车县| 米易县| 古交市| 宝清县| 乐陵市| 察隅县| 临安市| 永康市| 古丈县| 丹凤县| 阳信县| 西平县| 兴义市| 小金县| 光泽县| 唐河县| 蓬莱市| 乐平市| 旌德县| 繁昌县| 临沂市| 泽普县| 曲麻莱县| 鄂州市| 黑山县| 玛纳斯县| 斗六市| 长武县| 隆安县| 横山县| 凌海市| 正安县|