基于Vue實現(xiàn)消息提示功能
1.首先要先定義消息提示的組件,在這個組件中需要實現(xiàn)自動關(guān)閉的功能(看自己的愛好唄),并且設(shè)置自己喜歡的樣式,vue中還有可以自定義進(jìn)場和退場動畫的樣式(就是那個v-enter-active和v-leave-active)。這里還可以通過definePorps在外部設(shè)置屬性值
<template>
<div class="message" v-if="display">
<div class="content">
<div>Message組件實例</div>
<div class="close" @click="close">X</div>
</div>
</div>
</template>
<script setup>
import { ref, onMounted } from 'vue';
let display = ref(false);
function close() {
display.value = false
}
onMounted(() => {
display.value = true;
setTimeout(() => {
display.value = false;
}, 5000)
})
</script>
<style>
.content {
display: flex;
position: relative;
transform: translateY(-50%);
top: 50%;
}
.message {
border: 3px skyblue solid;
border-radius: 20px;
width: fit-content;
height: 30px;
text-align: center;
padding: 10px;
position: relative;
transform: translateX(-50%);
left: 50%;
}
.close {
margin-left: 20px;
font-weight: 700;
padding: 2px;
border: 1px solid red;
background-color: red;
}
</style>
2. 通過h函數(shù)和render函數(shù)實現(xiàn)組件的掛載
首先需要通過h函數(shù)創(chuàng)建組件的虛擬節(jié)點,h函數(shù)有多個重寫方法(h函數(shù)的具體用法),這里用的直接傳入一個節(jié)點(也就是自定義的組件),h函數(shù)會有一個VNode的返回值,通過render渲染函數(shù)進(jìn)行渲染,然后將div掛載到body上,最后將這個函數(shù)導(dǎo)出
import Message from './Message.vue'
import { h, render } from 'vue'
export function createMessage() {
const div = document.createElement("div");
render(h(Message), div);
document.body.appendChild(div)
}
3.使用
這里實現(xiàn)的是最簡單的消息提示,正常來說應(yīng)該用props來傳遞屬性(比如傳遞的消息內(nèi)容等等)。
import { createMessage } from './message/Message.js'
createMessage();
例如說這樣
<template>
<div class="message" v-if="display">
<div class="content">
<div>{{message}}</div>
<div class="close" @click="close">X</div>
</div>
</div>
</template>
<script setup>
import { ref, onMounted } from 'vue';
const { message } = defineProps(["message"])
</script>
import Message from './Message.vue'
import { h, render } from 'vue'
export function createMessage({ Msg = "消息提示" }) {
const div = document.createElement("div");
render(h(Message, { message: Msg }), div);
document.body.appendChild(div)
}
<script setup>
import { createMessage } from './message/Message.js'
createMessage({ Msg: "Hello World" });
</script>
<template>
</template>
這樣就可以實現(xiàn)一個簡單的消息傳遞,但是功能非常的不全(所以我為什么不用Element呢.......),可以當(dāng)成事件觸發(fā)后的提示功能
到此這篇關(guān)于基于Vue實現(xiàn)消息提示功能的文章就介紹到這了,更多相關(guān)Vue消息提示內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Electron24+Vite4+Vue3搭建桌面端應(yīng)用實戰(zhàn)教程
這篇文章主要介紹了基于Electron24+Vite4+Vue3搭建桌面端應(yīng)用,這次給大家主要分享的是基于electron最新版本整合vite4.x構(gòu)建vue3桌面端應(yīng)用程序,需要的朋友可以參考下2023-05-05
基于uniapp+vue3?實現(xiàn)72小時倒計時功能
數(shù)組項有一個下單時間?,比如今天下單在72小時內(nèi)可以繼續(xù)支付,超過則默認(rèn)取消訂單,下面通過實例代碼介紹uniapp+vue3?實現(xiàn)72小時倒計時功能,感興趣的朋友一起看看吧2025-05-05

