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

vue封裝全局彈窗警告組件this.$message.success問題

 更新時(shí)間:2023年09月26日 09:11:49   作者:默默的小跟班  
這篇文章主要介紹了vue封裝全局彈窗警告組件this.$message.success問題,具有很的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

先上效果圖。

背景有遮罩層,并且模糊,彈窗設(shè)置了最小寬度,文字超出范圍,彈窗會(huì)自動(dòng)擴(kuò)展。

寫一個(gè)彈窗組件

message.vue

<template>
  <!-- 遮罩層 也是整個(gè)組件的容器-->
  <div class="pop-container" v-if="isShow">
    <div class="message-container">
      <!-- 兩個(gè)icon放在一個(gè)容器中,但是只顯示一個(gè) -->
      <div class="icon-container">
        <div class="icon-container-success" v-if="type === 'success'">
          <!-- 引用了iview的Icon組件 -->
          <Icon class="icon-checkmark" type="md-checkmark" size="30" color="#D8DCE9" />
        </div>
        <div class="icon-container-error" v-if="type === 'error'">
          <Icon class="icon-close" type="md-close" size="30" color="#D8DCE9" />
        </div>
      </div>
      <span class="message-text">{{ text }}</span>
    </div>
  </div>
</template>
<script>
export default {
  name: 'message',
  props: {
    type: {               // type控制是成功還是失敗
      type: String,
      default: 'success',
    },
    text: {              // 彈窗的文字信息
      type: String,
      default: '',
    },
    isShow: {             // 整個(gè)遮罩和彈窗是否顯示
      type: Boolean,
      default: true,
    },
  },
};
</script>
<style scoped lang="less">
.pop-container {
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 99999;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(24, 30, 53, 0.7);
  backdrop-filter: blur(10px);
}
.message-container {
  display: flex;
  justify-content: center;
  align-items: center;
  min-width: 384px;
  padding: 0 30px;
  height: 170px;
  background: #303e62;
  box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.1);
  border-radius: 12px;
}
.icon-container {
  position: relative;
  height: 40px;
  width: 40px;
  border-radius: 50%;
  &-error {
    background-color: #fe1b1b;
    height: 40px;
    width: 40px;
    border-radius: 50%;
    .icon-close {
      position: absolute;
      right: 5px;
      bottom: 5px;
      font-weight: 900;
    }
  }
  &-success {
    background-color: #4ad991;
    height: 40px;
    width: 40px;
    border-radius: 50%;
    .icon-checkmark {
      position: absolute;
      right: 4px;
      bottom: 5px;
      font-weight: 900;
    }
  }
}
.message-text {
  margin-left: 12px;
  font-weight: 500;
  font-size: 18px;
  line-height: 27px;
}
</style>

配置js文件

message.js

<script>
  import vue from 'vue';
  // 引入上面寫好的組件
  import Message from './message';
// 全局警告彈窗 第一個(gè)參數(shù)為提示的文本信息,第二個(gè)參數(shù)可選,為彈窗持續(xù)時(shí)間
// 可以提前看一下知識(shí)點(diǎn),Vue.extend + vm.$mount,可以讓我們?cè)趘ue中用js一樣的方法去直接調(diào)用一個(gè)組件
// https://www.cnblogs.com/hentai-miao/p/10271652.html
// 將vue組件利用Vue.extend方法變成一個(gè)組件構(gòu)造器,相當(dāng)于一個(gè)類
const MsgClass = vue.extend(Message);
const MsgMain = {
  show(text, type, duration) {
    // 實(shí)例化這個(gè)組件
    const instance = new MsgClass();
    // 將組件實(shí)例掛在到一個(gè)元素上面,如果不傳參數(shù)就是掛載到body,或者也可以傳入其他已經(jīng)存在的元素的選擇器
    instance.$mount(document.createElement('div'));
    // 通過組件實(shí)例的$el屬性,可以訪問到這個(gè)組件元素,然后把它拼接到body上。
    document.body.appendChild(instance.$el);
    // 給這個(gè)實(shí)例傳入?yún)?shù)
    instance.type = type;
    instance.text = text;
    instance.isShow = true;
    // 設(shè)置一個(gè)延遲,過了時(shí)間彈窗消失
    setTimeout(() => {
      instance.isShow = false;
    }, duration);
  },
  // 成功時(shí)調(diào)用這個(gè)方法
  success(text, duration = 2000) {
    this.show(text, 'success', duration);
  },
  // 失敗時(shí)調(diào)用這個(gè)方法
  error(text, duration = 2000) {
    this.show(text, 'error', duration);
  },
};
// 全局注冊(cè)
function Msg() {
  vue.prototype.$msg = MsgMain;
  // 最終調(diào)用就是this.$msg.success() 或者this.$msg.error()
}
export default Msg;
</script>

全局注冊(cè)組件

main.js

import Msg from '../src/components/message';
Vue.use(Msg);

使用

this.$msg.success('設(shè)置成功!');   // 第二個(gè)參數(shù)可以傳入彈窗持續(xù)時(shí)間,默認(rèn)是2000
this.$msg.success('設(shè)置成功!',3000);
this.$msg.error('設(shè)置失??!')

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue3之defineProps、defineEmits和defineExpose的使用及說明

    Vue3之defineProps、defineEmits和defineExpose的使用及說明

    文章介紹了Vue中defineProps、defineEmits和defineExpose的用途和作用,defineProps用于在子組件中定義類型安全的props,defineEmits允許子組件向父組件傳遞事件
    2025-10-10
  • vue使用pinia實(shí)現(xiàn)全局無縫通信

    vue使用pinia實(shí)現(xiàn)全局無縫通信

    這篇文章主要為大家詳細(xì)介紹了vue如何使用pinia實(shí)現(xiàn)全局無縫通信,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下
    2023-11-11
  • vue項(xiàng)目如何部署運(yùn)行到tomcat上

    vue項(xiàng)目如何部署運(yùn)行到tomcat上

    這篇文章主要介紹了vue項(xiàng)目如何部署運(yùn)行到tomcat上的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • ant-design-vue動(dòng)態(tài)表格合并案例

    ant-design-vue動(dòng)態(tài)表格合并案例

    這篇文章主要介紹了ant-design-vue動(dòng)態(tài)表格合并案例,文章圍繞主題通過案例詳解展開相關(guān)內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • vue使用element-plus依賴實(shí)現(xiàn)表格增加的示例代碼

    vue使用element-plus依賴實(shí)現(xiàn)表格增加的示例代碼

    這篇文章主要為大家詳細(xì)介紹了vue使用element-plus依賴實(shí)現(xiàn)表格增加,文中示例代碼講解的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2023-12-12
  • 原生JS?Intersection?Observer?API實(shí)現(xiàn)懶加載

    原生JS?Intersection?Observer?API實(shí)現(xiàn)懶加載

    這篇文章主要為大家介紹了原生JS?Intersection?Observer?API實(shí)現(xiàn)懶加載示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 詳解Vue 全局變量,局部變量

    詳解Vue 全局變量,局部變量

    這篇文章主要介紹了Vue全局變量局部變量,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Vue3頁面切換/刷新后恢復(fù)滾動(dòng)位置的超精簡(jiǎn)實(shí)現(xiàn)方案

    Vue3頁面切換/刷新后恢復(fù)滾動(dòng)位置的超精簡(jiǎn)實(shí)現(xiàn)方案

    在 Vue3 前端項(xiàng)目中,當(dāng)用戶在長列表 / 長內(nèi)容頁面滾動(dòng)瀏覽后,切換到其他頁面再返回,或刷新當(dāng)前頁面時(shí),滾動(dòng)條會(huì)默認(rèn)回到頂部,體驗(yàn)較差,本文將分享一種基于 ref 引用 + 本地存儲(chǔ)的方案,實(shí)現(xiàn)滾動(dòng)位置的記憶與恢復(fù),需要的朋友可以參考下
    2026-03-03
  • vue3的CRON表達(dá)式組件用法解讀

    vue3的CRON表達(dá)式組件用法解讀

    該文檔介紹了Cron表達(dá)式生成器的使用說明,該組件通過圖形化界面幫助用戶配置定時(shí)任務(wù)的執(zhí)行計(jì)劃,支持秒、分鐘、小時(shí)、日、月、周等時(shí)間單位的靈活配置,并實(shí)時(shí)計(jì)算并顯示最近5次執(zhí)行時(shí)間
    2026-01-01
  • vue實(shí)現(xiàn)日歷表格(element-ui)

    vue實(shí)現(xiàn)日歷表格(element-ui)

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)日歷表格(element-ui),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09

最新評(píng)論

钟山县| 阿克苏市| 内江市| 宣城市| 顺昌县| 酒泉市| 陆良县| 当雄县| 偏关县| 丹凤县| 舞阳县| 高阳县| 平湖市| 华池县| 贵南县| 上林县| 尼勒克县| 南召县| 东源县| 奉贤区| 银川市| 吉林省| 新泰市| 宜都市| 两当县| 高台县| 鄢陵县| 阳江市| 大港区| 长宁县| 额尔古纳市| 磴口县| 通道| 江永县| 凌云县| 常熟市| 西藏| 九寨沟县| 镇江市| 淮阳县| 洪泽县|