Vue+ElementUI/Plus切换路由后 Echart图表不显示问题解决

博客讲述了作者遇到的一个问题:Echart图表在项目本地运行正常,但打包部署后,某些路由下的图表无法显示,需要刷新页面才能正常。经过排查,发现原因是使用自定义div标签而不是ElementUI提供的标签导致的。通过将div替换为ElementUI的标签,成功解决了图表不显示的问题。这是一个关于前端开发中Echart和ElementUI集成时可能遇到的问题及解决办法。
摘要由CSDN通过智能技术生成

问题

项目本地运行正常,打包部署后;切换路由Echart图表不显示,刷新页面才正常

刚开始很费解:刚开始以为是组件懒加载的问题
后来又网上搜了下,发现有着问题的还不少
但是提供的解决方法都是:

  • 用setTimeout 来延迟Echart的加载
  • this.$nextTick()函数
  • 判断路由然后重载实现刷新页面显示Echart的目的

  • 但这些不会适用于用ElementIU/Plus的

解决

因为发现有些Echart的图表是正常的
然后就找正常的和不显示的不同点;
原因: 正常的显示的使用的是Element的标签,而不正常的使用的是自己写的div标签;
找到原因就好解决了:将div换为Element提供的标签
一下提供修改前和修改后的
修改前:
在这里插入图片描述
修改后:
在这里插入图片描述

实现动态路由需要在前端和后端两个方面进行处理,以下是使用VueElementUI和Spring Boot实现动态路由的代码示例: 前端代码示例: 1. 在Vue中,可以使用Vue Router来处理路由。首先需要在main.js中引入Vue Router并创建router实例,然后在路由配置文件中定义路由。在路由配置文件中,可以使用动态路由参数(例如:id)来处理动态路由: ```javascript // main.js import Vue from 'vue' import VueRouter from 'vue-router' import App from './App.vue' import router from './router' Vue.use(VueRouter) new Vue({ router, render: h => h(App) }).$mount('#app') // router.js import VueRouter from 'vue-router' import Home from './views/Home.vue' import About from './views/About.vue' import Dynamic from './views/Dynamic.vue' const router = new VueRouter({ routes: [ { path: '/', name: 'home', component: Home }, { path: '/about', name: 'about', component: About }, { path: '/dynamic/:id', name: 'dynamic', component: Dynamic } ] }) export default router ``` 2. 在ElementUI中,可以使用Menu组件来实现动态路由。首先需要在App.vue中引入Menu组件,并在Menu组件中定义路由菜单。在路由菜单中,可以使用动态路由参数(例如:id)来处理动态路由: ```html <template> <div id="app"> <el-container> <el-aside> <el-menu :default-active="activeIndex" class="el-menu-vertical-demo" @select="handleSelect"> <el-menu-item index="/"> <i class="el-icon-menu"></i> <span>Home</span> </el-menu-item> <el-menu-item index="/about"> <i class="el-icon-document"></i> <span>About</span> </el-menu-item> <el-menu-item v-for="item in dynamicRoutes" :key="item.path" :index="item.path"> <i class="el-icon-folder"></i> <span>{{ item.name }}</span> </el-menu-item> </el-menu> </el-aside> <el-main> <router-view></router-view> </el-main> </el-container> </div> </template> <script> import { Menu } from 'element-ui' export default { name: 'App', components: { 'el-menu': Menu }, data() { return { activeIndex: '/', dynamicRoutes: [] } }, created() { this.dynamicRoutes = [ { path: '/dynamic/1', name: 'Dynamic1' }, { path: '/dynamic/2', name: 'Dynamic2' } ] }, methods: { handleSelect(index) { this.activeIndex = index this.$router.push(index) } } } </script> ``` 后端代码示例: 1. 在Spring Boot中,可以使用@RestController注解来定义控制器,并在控制器中定义动态路由。在动态路由中,可以使用@PathVariable注解来处理动态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DeathAndLife

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值