时间:2021-05-25
本次封装的组件以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> <div class="toast" v-if="isShow"> <div class="toast-div">{{ text }}</div> </div></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('div') //将toast组件挂载到新创建的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函数Vue.prototype.$toast = toast; //给Vue对象添加$toast方法export default { name: 'hello', data () { return { } }, methods:{ showToast(){ this.$toast(); //现在就可以调用了 } }}</script>通过以上步骤,离真正的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中封装可复用的组件方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
组件(Component)是Vue.js最强大的功能。组件可以封装可重用的代码,通过传入对象的不同,实现组件的复用,但组件传值就成为一个需要解决的问题。1.父组
Vue中封装input组件最近有点忙不过来脱了很久,没有更新抱歉。今天要将的时如何自定义封装input组件,博主知识发个简单的模板码友们可以更具自己的实际项目添
基于目前React和Vue比较火,开发react-to-vue工具的目的是为了进一步提高组件的可复用用性,让组件复用不仅仅局限在一个框架里面简介对于react-
前言一种在ReactNative中封装的响应式Echarts组件,使用与示例请参见:react-native-echarts-demo近年来,随着移动端对数据可
组件在vue开发中是必不可少的一环,用好组件这把屠龙刀,就能解决不少问题。组件是什么官方的定义:组件是可复用的Vue实例,并且可带有一个名字。官方的定义已经非常