在vue中封装可复用的组件

本次封装的组件以toast组件为例

 

以前使用移动端ui插件时,通过一句代码比如 $.toast( ‘ 需要显示的内容 ’ ),从而在页面上展示这段文字,并在一定时间后消失。

现在我们也尝试自己封装toast组件。

准备工作:vue-cli脚手架工程

 

先看一下涉及到的文件目录截图:

在vue中封装可复用的组件_第1张图片

 

这次的封装主要涉及的文件是Toast.vue   toast.js  Hello.vue,主要思路如下:

① Toast.vue是我们要使用的toast组件;

② toast.js里面用Vue.extend()扩展一个组件构造器,然后通过实例化组件构造器,就可创造出可复用的组件。

     最后在toast.js里面导出函数myToast,函数myToast里面的逻辑在代码里面有解释;

③ Hello.vue里调用函数,显示组件。

 

Toast.vue代码:

 





 

 

 

 

 

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('div')    //将toast组件挂载到新创建的div上
	})
	document.body.appendChild( toastDom.$el )   //把toast组件的dom添加到body里
}
export default myToast;

 

Hello.vue代码:

 



 


 

 

通过以上步骤,离真正的toast效果还是有区别的,我们要达到的效果是让显示的内容在一段时间后消失,那么,得从toast.js里面修改,得重新写myToast函数,给他设置两个传入参数,一个是显示的内容,一个是显示的时间。

 

toast.js修改后的代码如下:

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('div')    //将toast组件挂载到新创建的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;

那么,现在我们在Hello.vue中调用的时候就应该是这样了:this.$toast('新内容',2000);我们的组toast组件可以正常使用了!

 

 

你可能感兴趣的:(vue,封装组件)