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

手把手教你寫一個(gè)vue全局注冊的Toast的實(shí)現(xiàn)

 更新時(shí)間:2022年04月01日 08:53:19   作者:小滴課堂  
本文主要介紹了手把手教你寫一個(gè)vue全局注冊的Toast的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言:

前幾天客戶經(jīng)理不讓我用某餓了么之類的UI庫做一個(gè)輕提示之類的組件,當(dāng)時(shí)一想我是餓了么戰(zhàn)士,怎么會寫哪個(gè)東西,然后我就想著用個(gè)alert糊弄過去,但是不行,然后我就細(xì)琢磨,發(fā)現(xiàn)Vue有個(gè)非常不錯(cuò)的Vue.extend。

經(jīng)過一番努力,我學(xué)會了,可能是以前學(xué)的時(shí)候馬虎漏掉了。不過問題不大,還能肝。

我們先思考下面的問題:

在寫vue項(xiàng)目的時(shí)候啊,我們有了初始化的根實(shí)例之后,頁面之間都是通過router進(jìn)行管理,組件也是通過import進(jìn)行局部注冊,但是如果我要是想從接口動態(tài)渲染組件怎么辦?想實(shí)現(xiàn)一個(gè)類似于 window.alert() 提示組件就像是調(diào)用 JS 函數(shù)一樣調(diào)用它?

提前寫好?

哪有那么多提前,有這個(gè)力氣還不如想一想今晚去哪干飯?

回到正題哈

首先:

我先提前準(zhǔn)備好一個(gè)干凈的vue2.x的項(xiàng)目,然后我寫好一個(gè)組件,叫什么名字好呢?就叫Toast,妥妥的輕提示

<template>
    <div class="box" v-if="isShow">
        <h1>{{msg}}</h1>
    </div>
</template>
<script>
export default {
    name:'Toast'
}
</script>
<style lang="">
    
</style>

看到這里那就可能有些鐵子問,為什么要放一個(gè)v-if上去?還有哪個(gè)msg是什么東西,還有哪個(gè)類名什么什么的,我們先把這些問題放一下,后面會解答

既然想要調(diào)用JS函數(shù)一樣愉快使用,那我們就這么愉快的決定了。

然后:

我在我的utils.js文件中寫下面的代碼

import vue from 'vue'
import Toast from '../views/Toast.vue'


// 生成構(gòu)造函數(shù)
const ToastConstructor = vue.extend(Toast)

function showToast(txt, onTime = 2000) {
    let newDom = new ToastConstructor({
        el: document.createElement('div'),
        data() {
            return {
                msg: txt,
                isShow: true
            }
        }
    });
    document.body.appendChild(newDom.$el)
    setTimeout(() => { newDom.isShow = false }, onTime)
}
//全局組件,掛載到vue原型上
function regFn() {
    vue.prototype.$toast = showToast
}

export default regFn

首先我們引入vue和Toast組件,畢竟我們需要用到vue的extend,肯定帶它一起玩,不帶它鬧脾。

然后我用Vue.extend生成一個(gè)構(gòu)造函數(shù)--->「const ToastConstructor = vue.extend(Toast)」

然后再進(jìn)行二次封裝,搞一個(gè)**「showToast函數(shù)」,傳入兩個(gè)參數(shù),一個(gè)是「內(nèi)容txt」,一個(gè)是「時(shí)間onTime」,輕提示嗎,肯定一下子又消失了,那個(gè)內(nèi)容就是模板「msg」**里要傳入的內(nèi)容,

后來:

我們new一個(gè)**「newDom,」** 它接收的是一個(gè)對象,就是把下面的東西裝起來,然后el是創(chuàng)生成一個(gè)**「dom」**

然后下面data返回**「msg」就是模板哪里的那個(gè)東西知道了吧,然后將傳進(jìn)來的「txt」給他安上,那個(gè)isShow也是就是模板上面的「v-if」**的,因?yàn)橐獎?chuàng)建一個(gè)元素,肯定這個(gè)好使,現(xiàn)在差不多完成啦,鐵子們再堅(jiān)持一下

然后我們再進(jìn)行掛載,怎么掛載呢?用**「document.body.appendChild(newDom.$el)」**

為什么呢?

「document.body.appendChild()」 是將指定的**「ewDom」**的 **「$el」加到「document.body」**的末尾

然后我們輕提示完了是不是要消失,所以就用**「setTimeout(() => { newDom.isShow = false }, onTime)」** 將它兩秒后消失,

然后就到了掛載到Vue原型上了,然后就是導(dǎo)出啦,不導(dǎo)出別人不知道你搞了什么出來。

再且:

在main入口文件引入這個(gè)utils.js,然后全局使用

//引入
import ToastDom from './util/utils'
// 全局注冊使用
Vue.use(ToastDom)

然后在隨便一個(gè)頁面使用,我這里是在App.vue中

<template>
  <div id="app">
    <button @click="addDom">動態(tài)添加組件</button>
  </div>
</template>

<script>
export default {

  methods: {
    addDom(){
      this.$toast('你瞧瞧我做的輕提示')
    }
  },
};
</script>

<style lang="less">

</style>

這里我用一個(gè)按鈕然后配合一個(gè)點(diǎn)擊事件,讓他使用這個(gè) 「$toast,」 并傳入一個(gè)字端,至此,大功告成。看看效果

到此這篇關(guān)于手把手教你寫一個(gè)vue全局注冊的Toast的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)vue全局注冊Toast內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue2組件實(shí)現(xiàn)懶加載淺析

    vue2組件實(shí)現(xiàn)懶加載淺析

    本篇文章主要介紹了vue2組件實(shí)現(xiàn)懶加載淺析,運(yùn)用懶加載則可以將頁面進(jìn)行劃分,需要的時(shí)候加載頁面,可以有效的分擔(dān)首頁所承擔(dān)的加載壓力.
    2017-03-03
  • vue中Echarts使用動態(tài)數(shù)據(jù)的兩種實(shí)現(xiàn)方式

    vue中Echarts使用動態(tài)數(shù)據(jù)的兩種實(shí)現(xiàn)方式

    這篇文章主要介紹了vue中Echarts使用動態(tài)數(shù)據(jù)的兩種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue安裝vue-router出錯(cuò)問題及解決

    vue安裝vue-router出錯(cuò)問題及解決

    這篇文章主要介紹了vue安裝vue-router出錯(cuò)問題及解決,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 解決vue3?defineProps?引入定義的接口報(bào)錯(cuò)

    解決vue3?defineProps?引入定義的接口報(bào)錯(cuò)

    這篇文章主要為大家介紹了解決vue3?defineProps?引入定義的接口報(bào)錯(cuò)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • vue導(dǎo)出excel表格的新手詳細(xì)教程

    vue導(dǎo)出excel表格的新手詳細(xì)教程

    相信大家做項(xiàng)目的時(shí)候,功能中都有導(dǎo)出模塊,下面這篇文章主要給大家介紹了關(guān)于vue導(dǎo)出excel表格的詳細(xì)教程,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • 詳解mpvue中使用vant時(shí)需要注意的onChange事件的坑

    詳解mpvue中使用vant時(shí)需要注意的onChange事件的坑

    這篇文章主要介紹了詳解mpvue中使用vant時(shí)需要注意的onChange事件的坑,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • 詳解Vue的組件中data選項(xiàng)為什么必須是函數(shù)

    詳解Vue的組件中data選項(xiàng)為什么必須是函數(shù)

    這篇文章主要給大家介紹了關(guān)于Vue的組件中data選項(xiàng)為什么必須是函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用Vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 如何在VUE中使用vue-awesome-swiper

    如何在VUE中使用vue-awesome-swiper

    這篇文章主要介紹了如何在VUE中使用vue-awesome-swiper,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2021-01-01
  • Vue拖拽組件開發(fā)實(shí)例詳解

    Vue拖拽組件開發(fā)實(shí)例詳解

    本文重點(diǎn)給大家介紹Vue拖拽組件開發(fā)實(shí)例,拖拽的原理是手指在移動的過程中,實(shí)時(shí)改變元素的位置即top和left值,使元素隨著手指的移動而移動。對實(shí)例代碼感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05
  • 詳解vue.js移動端配置flexible.js及注意事項(xiàng)

    詳解vue.js移動端配置flexible.js及注意事項(xiàng)

    最近在用vue做移動端項(xiàng)目,網(wǎng)上找了一些移動端適配的方案,個(gè)人覺得手淘團(tuán)隊(duì)flexible.js還是比較容易上手,在這里做下總結(jié)。對vue.js移動端配置flexible.js 相關(guān)知識感興趣的朋友跟隨小編一起看看吧
    2019-04-04

最新評論

庐江县| 崇州市| 万全县| 保康县| 宝清县| 霍林郭勒市| 青阳县| 静宁县| 监利县| 阆中市| 兴化市| 铁力市| 南澳县| 大宁县| 泰来县| 谷城县| 子洲县| 宁波市| 东源县| 高邑县| 宝坻区| 胶南市| 顺平县| 汝南县| 开平市| 太白县| 石台县| 灵台县| 资中县| 呼玛县| 苍溪县| 永丰县| 浦江县| 家居| 抚顺县| 且末县| 南丰县| 林甸县| 武冈市| 兴海县| 双鸭山市|