vue+echart+map+swiper: 使用 swiper轮播或tab标签页切换只会显示第一个地图组件,其它地图无法显示bug的解决
在vue中使用swiper ,地图echart分别封装为两个组件:
<a-carousel arrows autoplay :autoplaySpeed="autoplaySpeed"> <div style="width:100%;"> <hotmap></hotmap> </div> <div style="width:100%;"> <hotmap2></hotmap2> </div> </a-carousel>
其中hotmap 可以显示,hotmap2 怎么也显示不出来了
开始怀疑是组件绘制地图出的问题,但是发现直接渲染地图(不用swiper)没问了可以显示
再次排查,发现调换位置后,hotmap2 显示,hotmap 不会显示了
这就大概知道原因了, 在swiper 内只有第一个组件会显示,第二个组件静态的页面也可以显示,但是像这种hotmap,绘制地图图标调用接口等的异步绘制就没办法显示了,因为组件会自动加载后不再继续执行。
那么解决思路也就清晰了:
在组件加载前让它们分别加载,先加载第一个,其它的延迟加载即可:
<div class="myswiper"> <a-carousel arrows autoplay :autoplaySpeed="autoplaySpeed"> <div style="width:100%;"> <hotmap></hotmap> </div> <div style="width:100%;"> <hotmap2 v-if="showMap2"></hotmap2> </div> </a-carousel> <!-- <hotmap2></hotmap2> --> </div>
showMap2:false
mounted() {
this.timer = setTimeout(()=>{
this.showMap2= true
},800)
},
destroyed(){
clearTimeout(this.timer)
this.timer = null
},
除了这个,tab切换页面以及其它图标绘制也需要遵循这种规律,当然一定要注意还有个图表绘制依赖的div id ref 的命名的唯一性 不然也会出现不绘制无法显示等问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2020-07-20 ant-vue table之改变默认滚动条样式
2020-07-20 ant-design-vue:组件a-table 排序之 是 和否 进行排序,时间排序