下面我就為大家分享一篇在vue中封裝可重複使用的元件方法,具有很好的參考價值,希望對大家有幫助。
本次封裝的元件以toast元件為例
先前使用行動裝置ui外掛程式時,透過一句程式碼例如$.toast( ' 需要顯示的內容' ),從而在頁面上展示這段文字,並在一定時間後消失。
現在我們也嘗試自己封裝toast元件。
準備工作:vue-cli鷹架工程
先看一下牽涉到的檔案目錄截圖:
這次的封裝主要涉及的檔案是Toast.vue toast.js Hello.vue,主要想法如下:
① Toast.vue是我們要使用的toast元件;
#② toast .js裡面用
Vue.extend()擴充一個元件建構器,然後透過實例化元件建構器,就可創造出可重複使用的元件。
最後在toast.js裡面匯出函數myToast,函數myToast裡面的邏輯在程式碼裡面有解釋;③ Hello.vue裡呼叫函數,顯示元件。
Toast.vue程式碼:
<template> <p class="toast" v-if="isShow"> <p class="toast-p">{{ text }}</p> </p> </template> <script> export default{ data(){ return { text:'内容', 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) // 返回一个“扩展实例构造器”
let myToast = ()=>{
let toastDom = new ToastConstructor({
el:document.createElement('p') //将toast组件挂载到新创建的p上
})
document.body.appendChild( toastDom.$el ) //把toast组件的dom添加到body里
}
export default myToast;
<template>
<p class="hello">
<button @click="showToast">按钮</button>
</p>
</template>
<script>
import Vue from 'vue';
import toast from './js/toast'; //引入toast函数
Vue.prototype.$toast = toast; //给Vue对象添加$toast方法
export default {
name: 'hello',
data () {
return {
}
},
methods:{
showToast(){
this.$toast(); //现在就可以调用了
}
}
}
</script>
透過以上步驟,離真正的toast效果還是有差別的,我們要達到的效果是讓顯示的內容在一段時間後消失,那麼,得從toast.js裡面修改,得重新寫myToast函數,給他設定兩個傳入參數,一個是顯示的內容,一個是顯示的時間。
import Vue from 'vue'; import Toast from '@/components/Toast'; //引入组件 let ToastConstructor = Vue.extend(Toast) // 返回一个“扩展实例构造器” let myToast = (text,duration)=>{ let toastDom = new ToastConstructor({ el:document.createElement('p') //将toast组件挂载到新创建的p上 }) 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;
那麼,現在我們在Hello.vue中呼叫的時候就應該是這樣了:
this.$toast('新內容',2000);我們的群組toast元件可以正常使用了!
#######使用vue中的v-for遍歷二維數組的方法############JavaScript中使用import 和require打包後實作原理分析######以上是在vue中如何實作封裝可重複使用的元件的詳細內容。更多資訊請關注PHP中文網其他相關文章!