下面我就为大家分享一篇在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代码:
{{ text }}
export default{data(){return {text:'内容',isShow:true,duration:1500}}}*{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;}
登录后复制
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;
登录后复制
Hello.vue代码:
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(); //现在就可以调用了 } }}
登录后复制
通过以上步骤,离真正的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('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的数据分组实例
使用vue中的v-for遍历二维数组的方法
JavaScript中使用import 和require打包后实现原理分析
以上就是在vue中如何实现封装可复用的组件的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2751162.html