中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用vue怎么實現一個全局Message組件

發布時間:2021-04-19 18:01:33 來源:億速云 閱讀:798 作者:Leah 欄目:web開發

這篇文章將為大家詳細講解有關使用vue怎么實現一個全局Message組件,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

vue是什么軟件

Vue是一套用于構建用戶界面的漸進式JavaScript框架,Vue與其它大型框架的區別是,使用Vue可以自底向上逐層應用,其核心庫只關注視圖層,方便與第三方庫和項目整合,且使用Vue可以采用單文件組件和Vue生態系統支持的庫開發復雜的單頁應用。

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

使用vue怎么實現一個全局Message組件

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) // 創建的是一個組件構造器,不是實例
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元素渲染完成后執行回調
   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");
 }

關于使用vue怎么實現一個全局Message組件就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永胜县| 浪卡子县| 平利县| 庐江县| 建宁县| 梅州市| 江永县| 葫芦岛市| 论坛| 靖远县| 吴旗县| 微山县| 抚松县| 大英县| 景宁| 永修县| 邻水| 安康市| 承德县| 左权县| 罗源县| 高青县| 汶川县| 华蓥市| 隆回县| 天柱县| 惠州市| 沙洋县| 齐齐哈尔市| 郓城县| 潜山县| 河曲县| 加查县| 定安县| 伊春市| 竹北市| 娄底市| 辽宁省| 龙门县| 嘉黎县| 清苑县|