如何在vue中封裝一個可復(fù)用的組件?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)、都安網(wǎng)絡(luò)推廣、成都小程序開發(fā)、都安網(wǎng)絡(luò)營銷、都安企業(yè)策劃、都安品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供都安建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:jinyejixie.com
文件目錄截圖:
這次的封裝主要涉及的文件是Toast.vue toast.js Hello.vue,主要思路如下:
① Toast.vue是我們要使用的toast組件;
② toast.js里面用Vue.extend()擴(kuò)展一個組件構(gòu)造器,然后通過實(shí)例化組件構(gòu)造器,就可創(chuàng)造出可復(fù)用的組件。
最后在toast.js里面導(dǎo)出函數(shù)myToast,函數(shù)myToast里面的邏輯在代碼里面有解釋;
③ Hello.vue里調(diào)用函數(shù),顯示組件。
Toast.vue代碼:
<template> <div class="toast" v-if="isShow"> <div class="toast-div">{{ text }}</div> </div> </template> <script> export default{ data(){ return { text:'內(nèi)容', isShow:true, duration:1500 } } } </script> <style> *{ margin: 0; padding: 0; } .toast{ position: fixed; left: 50%; transform: translate(-50%, 0); margin-top: 5rem; background: #000000; line-height: 0.7rem; color: #FFFFFF; padding: 0 0.2rem; border-radius: 0.2rem; } </style>
Toast.js代碼:
import Vue from 'vue'; import Toast from '@/components/Toast'; //引入組件 let ToastConstructor = Vue.extend(Toast) // 返回一個“擴(kuò)展實(shí)例構(gòu)造器” let myToast = ()=>{ let toastDom = new ToastConstructor({ el:document.createElement('div') //將toast組件掛載到新創(chuàng)建的div上 }) document.body.appendChild( toastDom.$el ) //把toast組件的dom添加到body里 } export default myToast;
Hello.vue代碼:
<template> <div class="hello"> <button @click="showToast">按鈕</button> </div> </template> <script> import Vue from 'vue'; import toast from './js/toast'; //引入toast函數(shù) Vue.prototype.$toast = toast; //給Vue對象添加$toast方法 export default { name: 'hello', data () { return { } }, methods:{ showToast(){ this.$toast(); //現(xiàn)在就可以調(diào)用了 } } } </script>
通過以上步驟,離真正的toast效果還是有區(qū)別的,我們要達(dá)到的效果是讓顯示的內(nèi)容在一段時間后消失,那么,得從toast.js里面修改,得重新寫myToast函數(shù),給他設(shè)置兩個傳入?yún)?shù),一個是顯示的內(nèi)容,一個是顯示的時間。
toast.js修改后的代碼如下:
import Vue from 'vue'; import Toast from '@/components/Toast'; //引入組件 let ToastConstructor = Vue.extend(Toast) // 返回一個“擴(kuò)展實(shí)例構(gòu)造器” let myToast = (text,duration)=>{ let toastDom = new ToastConstructor({ el:document.createElement('div') //將toast組件掛載到新創(chuàng)建的div上 }) document.body.appendChild( toastDom.$el ) //把toast組件的dom添加到body里 toastDom.text = text; toastDom.duration = duration; // 在指定 duration 之后讓 toast消失 setTimeout(()=>{ toastDom.isShow = false; }, toastDom.duration); } export default myToast;
關(guān)于如何在vue中封裝一個可復(fù)用的組件問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。
本文標(biāo)題:如何在vue中封裝一個可復(fù)用的組件
新聞來源:http://jinyejixie.com/article0/jopoio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站導(dǎo)航、網(wǎng)站維護(hù)、面包屑導(dǎo)航、網(wǎng)站改版、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)