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

Vue封裝全局toast組件的完整實(shí)例

 更新時(shí)間:2021年07月13日 11:18:03   作者:_kyz  
組件(Component)是 Vue.js 最強(qiáng)大的功能之一,組件可以擴(kuò)展 HTML 元素,封裝可重用的代碼,這篇文章主要給大家介紹了關(guān)于Vue封裝全局toast組件,需要的朋友可以參考下

前言

最近體驗(yàn)了下Vue,Toast都是前端常用組件,本文詳細(xì)介紹了Vue封裝全局toast組件的過程,下面話不多說了,來一起看看詳細(xì)的介紹吧

一. 借助 vue-cli

1. 定義 Toast 組件

// components/Toast

<template>
  <transition name="fade">
    <div v-show="visible">{{message}}</div>
  </transition>
</template>

<script>
export default {
  data () {
    return {
      visible: false,
      message: ''
    }
  }
}
</script>

<style scoped>
div {
  position: fixed;
  top: 30%;
  left: 50%;
  padding: 5px 20px;
  color: #fff;
  background-color: #424242;
  border-radius: 5px;
  text-align: center;
  transform: translate(-50%, -50%);
}
/* vue動(dòng)畫過渡效果設(shè)置 */
.fade-enter-active,
.fade-leave-active {
  transition: opacity .5s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}
</style>

2. 在 main.js 里面配置

import Vue from 'vue'
import App from './App.vue'
import Toast from './components/Toast'

// 定義插件對(duì)象
const ToastObj = {
  install: function (Vue) {
    // 創(chuàng)建一個(gè)Vue的“子類”組件
    const ToastConstructor = Vue.extend(Toast)
    // 創(chuàng)建一個(gè)該子類的實(shí)例,并掛載到一個(gè)元素上
    const instance = new ToastConstructor()
    console.log(instance)
    // 將這個(gè)實(shí)例掛載到動(dòng)態(tài)創(chuàng)建的元素上,并將元素添加到全局結(jié)構(gòu)中
    instance.$mount(document.createElement('div'))
    document.body.appendChild(instance.$el)

    // 在Vue的原型鏈上注冊(cè)方法,控制組件
    Vue.prototype.$toast = (msg, duration = 1500) => {
      instance.message = msg
      instance.visible = true
      setTimeout(() => {
        instance.visible = false
      }, duration)
    }
  }
}
Vue.use(ToastObj)

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')

3. 在其他組件內(nèi)使用

<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  data: () => {
    return {
      msg: 'HelloWord'
    }
  },
  mounted () {
  	// 使用 toast 組件
    this.$toast('組件掛載成功')
  }
}
</script>

二、不借助 vue-cli

 在借助 vue-cli 的情況下,可以方便實(shí)現(xiàn)組件的導(dǎo)入導(dǎo)出,但是在不借助構(gòu)建工具的情況下,就需要使用其他方法了

1. 注冊(cè) toast 組件

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="./static/vue/vue.min.js"></script>
</head>
<body>
  <div id="app">
    <my-button></my-button>
  </div>
  <div id="toast"></div>
  <script>
    // 定義 toast 全局組件
    const Toast = Vue.component('toast', {
      data() {
        return {
          isShow: false,
          message: '全局提示',
          wrapperStyle: {
            position: 'fixed',
            top: '20%',
            left: '50%',
            zIndex: 10000,
            padding: '6px 12px',
            backgroundColor: '#424242',
            borderRadius: '5px',
            transform: 'translate(-50%, -50%)'
          },
          textStyle: {
            color: '#fff',
            fontSize: '14px'
          }
        }
      },
      template: `<div v-show="isShow" :style="wrapperStyle">
                  <span :style="textStyle">{{ message }}</span>
                </div>`
    })

2. 注冊(cè) toast 插件

// 定義插件對(duì)象
const ToastObj = {
  install: function (Vue) {
    // 創(chuàng)建一個(gè) toast 組件實(shí)例,并掛載到一個(gè)元素上
    const instance = new Toast()
    // 將這個(gè)實(shí)例掛載到DOM中
    instance.$mount('#toast')

    // 在Vue的原型鏈上注冊(cè)方法,控制組件
    Vue.prototype.$toast = ({message, duration = 2000} = {}) => {
      instance.message = message
      instance.isShow = true

      setTimeout(() => {
        instance.isShow = false
      }, duration)
    }
  }
}
// 注冊(cè) toast 插件
Vue.use(ToastObj)

3. 在其他組件內(nèi)使用

    Vue.component('my-button', {
      data() {
        return {
          wrapperStyle: {
            width: '70px',
            padding: '20px',
            backgroundColor: 'green'
          },
          textStyle: {
            color: '#fff',
            fontSize: '16px'
          }
        }
      },
      methods: {
        handleClick() {
          this.$toast({
            message: '我點(diǎn)擊了'
          })
        }
      },
      template: `<div :style="wrapperStyle" @click="handleClick">
                  <span :style="textStyle">點(diǎn)擊提示</span>
                </div>`
    })

    const vm = new Vue({
      el: '#app'
    })
  </script>
</body>
</html>

總結(jié)

到此這篇關(guān)于Vue封裝全局toast組件的文章就介紹到這了,更多相關(guān)Vue封裝全局toast組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue: WebStorm設(shè)置快速編譯運(yùn)行的方法

    vue: WebStorm設(shè)置快速編譯運(yùn)行的方法

    今天小編就為大家分享一篇vue: WebStorm設(shè)置快速編譯運(yùn)行的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Vuejs第七篇之Vuejs過渡動(dòng)畫案例全面解析

    Vuejs第七篇之Vuejs過渡動(dòng)畫案例全面解析

    這篇文章主要介紹了Vuejs第七篇之Vuejs過渡動(dòng)畫案例全面解析的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • Vuex中五個(gè)屬性以及使用方法詳解

    Vuex中五個(gè)屬性以及使用方法詳解

    這篇文章主要給大家介紹了關(guān)于Vuex中五個(gè)屬性以及使用的相關(guān)資料,Vuex是一個(gè)專為Vue.js應(yīng)用程序開發(fā)的狀態(tài)管理模式,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • vue的.vue文件是怎么run起來的(vue-loader)

    vue的.vue文件是怎么run起來的(vue-loader)

    通過vue-loader,解析.vue文件,在webpack解析,拆解vue組件 ,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下
    2018-12-12
  • Vue2 中使用圖片查看器 v-viewer的方法

    Vue2 中使用圖片查看器 v-viewer的方法

    文章介紹了v-viewer插件,它是一個(gè)用于Vue的圖像查看器組件,基于viewer.js插件,可以通過npm安裝,支持指令形式和Vue組件形式的用法,并提供了豐富的配置選項(xiàng)和事件監(jiān)聽,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • npm?install時(shí)卡住不動(dòng)的五種解決方法

    npm?install時(shí)卡住不動(dòng)的五種解決方法

    在我們安裝完Node.js之后,需要使用npm命令來安裝一些工具,下面這篇文章主要給大家介紹了關(guān)于npm?install時(shí)卡住不動(dòng)的五種解決方法,需要的朋友可以參考下
    2023-06-06
  • vue3網(wǎng)絡(luò)請(qǐng)求添加loading過程

    vue3網(wǎng)絡(luò)請(qǐng)求添加loading過程

    這篇文章主要介紹了vue3網(wǎng)絡(luò)請(qǐng)求添加loading過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • vue雙向錨點(diǎn)實(shí)現(xiàn)過程簡(jiǎn)易版(scrollIntoView)

    vue雙向錨點(diǎn)實(shí)現(xiàn)過程簡(jiǎn)易版(scrollIntoView)

    這篇文章主要介紹了vue雙向錨點(diǎn)實(shí)現(xiàn)過程簡(jiǎn)易版(scrollIntoView),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • vue?路由判斷方式

    vue?路由判斷方式

    這篇文章主要介紹了vue?路由判斷方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue總線機(jī)制(bus)知識(shí)點(diǎn)詳解

    vue總線機(jī)制(bus)知識(shí)點(diǎn)詳解

    在本篇文章中小編給大家整理的是關(guān)于vue總線機(jī)制(bus)知識(shí)點(diǎn)總結(jié),有興趣的朋友們可以跟著學(xué)習(xí)下。
    2020-05-05

最新評(píng)論

武陟县| 阳谷县| 松溪县| 阳信县| 东乌| 大安市| 永嘉县| 高青县| 九江市| 上饶县| 辰溪县| 确山县| 东源县| 黔江区| 舞阳县| 金山区| 陕西省| 苏尼特左旗| 虹口区| 化德县| 军事| 通渭县| 卫辉市| 穆棱市| 尼勒克县| 高尔夫| 江川县| 梅河口市| 哈密市| 明溪县| 黑河市| 昭觉县| 吴桥县| 开平市| 康保县| 华安县| 双峰县| 白河县| 濮阳县| 海丰县| 波密县|