亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用vuetify實現(xiàn)全局v-alert消息通知的方法

 更新時間:2024年02月29日 15:29:31   作者:DingDangDog  
使用強大的Vuetify開發(fā)前端頁面,結(jié)果發(fā)現(xiàn)官方?jīng)]有提供簡便的全局消息通知組件,所以自己動手寫了一個簡單的組件,接下來通過本文給大家介紹使用vuetify實現(xiàn)全局v-alert消息通知的詳細代碼,感興趣的朋友跟隨小編一起看看吧

簡介

使用強大的Vuetify開發(fā)前端頁面,結(jié)果發(fā)現(xiàn)官方?jīng)]有提供簡便的全局消息通知組件(像Element中的ElMessage那樣),所以自己動手寫了一個簡單的組件,效果如下:

PS:如果是我沒找到官方版本,請評論告訴我!下面直接上代碼

組件封裝

全局變量:alert.ts

該文件可視為util文件,但我將其放在了stores文件夾下,主要提供了兩個作用:

  • 定義newAlert全局變量,用于臨時存儲新Alert信息。
  • 定義常用的全局方法,用于快速創(chuàng)建alert,如:successAlert、errorAlert等。
import { ref } from 'vue'
export interface AlertInfo {
  id: string,
  type: string,
  message: string
}
export const newAlert = ref<AlertInfo>({
  id: 'alert' + 0,
  type: '',
  message: ''
})
export const alert = (type: string, message: string) => {
  newAlert.value.id = Math.random().toString()
  newAlert.value.type = type
  newAlert.value.message = message
}
export const errorAlert = (message: string) => {
  alert('error', message)
}
export const successAlert = (message: string) => {
  alert('success', message)
}
export const infoAlert = (message: string) => {
  alert('info', message)
}
export const warningAlert = (message: string) => {
  alert('warning', message)
}

組件:GlobalAlert.vue

該文件是v-alert二次封裝的組件,主要提供了以下幾個功能:

  • 監(jiān)聽newAlert值的變化,當值變化時,根據(jù)當時newAlert更新alertMap;
  • 遍歷alertMap創(chuàng)建多個v-alert;
  • 定時刪除歷史v-alert;
  • css定義v-alert的顯示位置。
<script setup lang="ts">
import { ref, watch } from 'vue'
import { type AlertInfo, newAlert } from '@/stores/alert'
// 定義 Map,存儲Alert信息集合,使用Map便于刪除
const alertMap = ref<Map<string, AlertInfo>>(new Map)
// 監(jiān)聽新Alert創(chuàng)建
watch(newAlert.value, () => {
  alertMap.value.set(newAlert.value.id, { ...newAlert.value })
  console.log(alertMap.value)
  deleteAlert(newAlert.value.id)
})
const deleteAlert = (id: string) => {
  console.log(id)
  setTimeout(() => {
    alertMap.value.delete(id)
  }, 3000)
}
</script>
<template>
  <div class="alert-container">
    <v-alert
      class="v-alert"
      v-for="(alert, index) in Array.from(alertMap.values())"
      :key="index"
      :type="alert.type"
      border="start"
      variant="tonal"
      closable
      close-label="Close Alert"
      :text="alert.message"
    >
    </v-alert>
  </div>
</template>
<style scoped>
.alert-container {
  position: absolute;
  top: 8%;
  right: 5%;
}
.v-alert {
  margin-top: 0.2rem !important;
}
</style>

調(diào)用測試

有了以上兩個文件后,即可調(diào)用測試

引用組件

  • 要想全局顯示通知,則需要在項目頂層文件中引用該組件,我是在App.vue中引用,如下:
<script setup lang="ts">
import { RouterView } from 'vue-router'
// 引用GlobalAlert
import GlobalAlert from '@/components/GlobalAlert.vue'
</script>
<template>
    // 引用GlobalAlert
  <GlobalAlert />
  <RouterView />
</template>
<style scoped>
</style>

調(diào)用工具方法

  • 組件引用后,即可在項目任意地方調(diào)用工具方法測試效果,調(diào)用方式如下:
<script setup lang="ts">
// 引入封裝好的工具方法
import { successAlert, errorAlert, infoAlert, warningAlert } from '@/stores/alert'
</script>
<template>
  <!-- 按鈕直接調(diào)用測試 -->
  <v-btn variant="tonal"
         @click="successAlert('success')">
    success
  </v-btn>
  <v-btn variant="tonal"
         @click="errorAlert('error')">
    error
  </v-btn>
  <v-btn variant="tonal"
         @click="infoAlert('info')">
    info
  </v-btn>
  <v-btn variant="tonal"
         @click="warningAlert('warning')">
    warning
  </v-btn>
</template>
<style scoped>
</style>

可能存在的問題

  • 可能存在并發(fā)問題:沒有進行并發(fā)測試;
  • 可能存在響應式問題:本示例僅在桌面端測試過,可能無法適配手機、平板等終端;

參考資料

到此這篇關(guān)于使用vuetify實現(xiàn)全局v-alert消息通知的方法的文章就介紹到這了,更多相關(guān)vuetify 全局v-alert消息通知內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue實現(xiàn)動態(tài)路由的示例詳解

    Vue實現(xiàn)動態(tài)路由的示例詳解

    這篇文章主要為大家詳細介紹了Vue實現(xiàn)動態(tài)路由的相關(guān)知識,主要涉及到兩個方面:一是路由的動態(tài)添加,二是基于路由的參數(shù)變化來動態(tài)渲染組件,下面就跟隨小編一起深入學習一下動態(tài)路由的實現(xiàn)吧
    2024-02-02
  • 詳解vue-cli項目在IE瀏覽器打開報錯解決方法

    詳解vue-cli項目在IE瀏覽器打開報錯解決方法

    這篇文章主要介紹了詳解vue-cli項目在IE瀏覽器打開報錯解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • 詳解Vue中一種簡易路由傳參辦法

    詳解Vue中一種簡易路由傳參辦法

    本篇文章主要介紹了詳解Vue中一種簡易路由傳參辦法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • vue+elementUi實現(xiàn)點擊地圖自動填充經(jīng)緯度以及地點

    vue+elementUi實現(xiàn)點擊地圖自動填充經(jīng)緯度以及地點

    這篇文章主要為大家詳細介紹了vue+elementUi實現(xiàn)點擊地圖自動填充經(jīng)緯度以及地點,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 解決element-ui el-input賦值后不能編輯的問題

    解決element-ui el-input賦值后不能編輯的問題

    這篇文章主要介紹了解決element-ui el-input賦值后不能編輯的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Vue組件數(shù)據(jù)傳遞與props校驗方式

    Vue組件數(shù)據(jù)傳遞與props校驗方式

    這篇文章主要介紹了Vue組件數(shù)據(jù)傳遞與props校驗方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Vue 讀取HTMLCollection列表的length為0問題

    Vue 讀取HTMLCollection列表的length為0問題

    這篇文章主要介紹了Vue 讀取HTMLCollection列表的length為0問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 詳解Vue項目在其他電腦npm run dev運行報錯的解決方法

    詳解Vue項目在其他電腦npm run dev運行報錯的解決方法

    這篇文章主要介紹了詳解Vue項目在其他電腦npm run dev運行報錯的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 如何利用Echarts根據(jù)經(jīng)緯度給地圖畫點畫線

    如何利用Echarts根據(jù)經(jīng)緯度給地圖畫點畫線

    最近工作中遇到了一個需求,需要利用echarts在地圖上面標記點位,所下面這篇文章主要給大家介紹了關(guān)于如何利用Echarts根據(jù)經(jīng)緯度給地圖畫點畫線的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • element UI upload組件上傳附件格式限制方法

    element UI upload組件上傳附件格式限制方法

    今天小編就為大家分享一篇element UI upload組件上傳附件格式限制方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09

最新評論