首頁 > web前端 > js教程 > 主體

在vue中如何實作封裝可重複使用的元件

亚连
發布: 2018-06-02 10:28:24
原創
3676 人瀏覽過

下面我就為大家分享一篇在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:&#39;内容&#39;,
			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 &#39;vue&#39;; 
import Toast from &#39;@/components/Toast&#39;; //引入组件 
let ToastConstructor = Vue.extend(Toast) // 返回一个“扩展实例构造器” 
 
let myToast = ()=>{ 
 let toastDom = new ToastConstructor({ 
 el:document.createElement(&#39;p&#39;) //将toast组件挂载到新创建的p上 
 }) 
 document.body.appendChild( toastDom.$el ) //把toast组件的dom添加到body里 
} 
export default myToast;
登入後複製

Hello.vue程式碼:

<template>
 <p class="hello">
 <button @click="showToast">按钮</button>
 </p>
</template>
<script>
import Vue from &#39;vue&#39;;
import toast from &#39;./js/toast&#39;; //引入toast函数
Vue.prototype.$toast = toast;  //给Vue对象添加$toast方法
export default {
 name: &#39;hello&#39;,
 data () {
 return {
 
 }
 },
 methods:{
 	showToast(){
 		this.$toast();  //现在就可以调用了
 	}
 }
}
</script>
登入後複製
透過以上步驟,離真正的toast效果還是有差別的,我們要達到的效果是讓顯示的內容在一段時間後消失,那麼,得從toast.js裡面修改,得重新寫myToast函數,給他設定兩個傳入參數,一個是顯示的內容,一個是顯示的時間。

toast.js修改後的程式碼如下:

import Vue from &#39;vue&#39;; 
import Toast from &#39;@/components/Toast&#39;; //引入组件 
let ToastConstructor = Vue.extend(Toast) // 返回一个“扩展实例构造器” 
 
let myToast = (text,duration)=>{ 
 let toastDom = new ToastConstructor({ 
 el:document.createElement(&#39;p&#39;) //将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的資料分組實例

#######使用vue中的v-for遍歷二維數組的方法############JavaScript中使用import 和require打包後實作原理分析######

以上是在vue中如何實作封裝可重複使用的元件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!