问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用将 eharts 封装成可复用的vue组件

发布网友 发布时间:2022-05-14 23:21

我来回答

2个回答

懂视网 时间:2022-05-15 03:43

下面我就为大家分享一篇在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;

Hello.vue代码:

<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函数,给他设置两个传入参数,一个是显示的内容,一个是显示的时间。

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打包后实现原理分析

热心网友 时间:2022-05-15 00:51

Map对象可以是直接HashMap的实例
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
获取oracle中表的表结构、约束和索引信息 若3的x次方等于二十七分之一,则3的负x次方 若x的2x-1次方=1,则x=多少。若3的x次方=27分之1,则x=多少 3的x次方=1/81,x=? ...为什么?。。。若3的x次方等于81分之一,则x等于什么??急 语文句子成分分析详解 初三英语,关于被动语态 级品飞车lo如何下载? 极品飞车全球在线(nfsol)现在可以在大陆玩么?内测完毕了?听说要个登... ...一个星期不理我了怎么办,电话也不接信息也不回,问她是不是有男人了... 请懂这个的高手解答一下 动物无害化处理场改扩建项目建设投资申请报告word 我想搞个小型石磨面粉机加工石磨面粉,求石磨面粉机价格和联系方式 石磨绿小麦面粉多少钱一斤? 现在市场上石磨面粉价格是多少 现在市场上的石磨面粉多少钱一斤?销量怎么样? 登录需要验证,但是验证不了怎么解决吗? 为什么被人关注和模仿那么烦?到底应该怎么做别人才不会关注我? 为什么人被关注自己很久的粉丝取关后,心里会难过? 被人真心喜欢是什么感觉? 被人关注是种什么样的体验? 求被关注的话就完蛋了高清百度云资源 如果被关注那就完了主题曲叫什么呀? 跪求 如果被关注那就完了 百度云免费在线观看资源 《如果被关注那就完了》免费在线观看完整版高清,求百度网盘资源 手机里的资料用自带备份软件备份成功之后,我把手机格式化了,怎么恢复不了备份资料?急!!! 有什么型号手机是双卡双用的? 手机里的备份和恢复被停用了怎样开启 年纪轻轻肌营养不良该怎么治 肌营养不良的最好的锻炼方法? 党的第十二届三中全会的重大贡献是什么? 科学家有谁对人类做出了重大贡献 郑成功在历史上的重大贡献是什么? 简述孙中山一生的重大贡献 我国对农业做出重大贡献的人有哪些? 中华人民共和国有哪些做出了巨大的贡献? 减刑中重大贡献包含哪些 张衡做出了什么重大贡献 有哪些科学家为我们的生活做出了巨大贡献? 为什么天正电气cad2012里没显示天正工具栏呢? 网关有线端和无线端是什么 大学生英语四级考试实战指南模拟试卷1-6,答案 大学英语四级考试模拟试题有没有用 白酒行业安全生产容易导致的重大安全风险主要有哪些 白酒行业资金风险有哪些? 大学英语四级考试:听力(经典710分汪士彬四级考试系列) 期中模拟题1-10的听力原文电子版。 针对双频wifi的智能网关设备如果要启用器wifi功能建议设备安装在多少高度 贵州茅台风险分析,600519风险分析 多家白酒企业被约谈,对白酒股市造成了哪些影响? 6岁半儿童嗓子哑一个月什么原因