问题描述:
从A页面(该页面通过定时器刷新图表)切换到B页面,停留一段时间,再回到A页面,图表要过一会才能显示出来。
问题分析:
仅仅是A页面发生延迟显示,但是B页面表现都是正常的,究其原因,A页面没有给echarts设置宽度,而B页面设置了固定的高和宽,所以A页面echarts的宽度取决于屏幕宽度。
解决过程:
刚开始以为是echarts内存泄漏问题,但是电脑的CPU并没有明显升高,而且也已经按照常规方法做了echarts对象的释放;之后才定位到echarts未设置宽度的问题,添加了window监听echartssize变化,但是依旧没有完全解决问题,只不过是延时缩短了一点点。各种百度,不断尝试,终于解决了问题,那就是在vue的activated生命周期里就给echarts做resize,唯一的缺憾是,echarts的实例在activated触发时,还没有被初始化,值是null,会导致控制台报未定义的错误,但是好在并未影响功能实现。
注意点:
路由的keepAlive设置为true,vue的activated生命周期才有效。