vue 切换页面echarts图表不显示

最近在做数据大屏,最开始是别的同事负责,她请假后我负责,整理遇到的问题,都是在dev 时正常,部署到线上时运行异常。
走了不少弯路,又升级版本,又换npm、cnpm、yarn各种尝试修改,按下葫芦浮起瓢,最终找到问题解决方案,记录下来帮助有缘人。实际找到问题原因,处理起来非常简单。
问题1:页面路由来回切换后发现图表不能正常渲染,本地运行npm run dev正常,发布到线上就不正常了。
解决方案:
创建图表前先移除对应id

document.getElementById('ageEcharts').removeAttribute('_echarts_instance_');
    let chart = ageEcharts.init(document.getElementById('ageEcharts'), 'purple-passion');

问题2:使用百度地图,切换路由后页面还是旧页面,看浏览器地址已经变为新的路由地址了,手动刷新页面可正常显示。该问题也是在本地运行时正常,打包到线上时后台报错,路由切换异常。
排查:发现后台打印报错 TypeError: Cannot read properties of undefined (reading 'refs')
发现<BMap>中传入了ref,去掉后页面运行正常。代码如下

<BMap
        :heading="360"
        :tilt="20"
        :zoom="17.6"
        :minZoom="3"
        :roam="true"
        :center="{ lat: 35.072849, lng: 118.335627 }"
        height="calc(100vh - 63px)"
                    ref="mapItem"
        :restrictCenter="false"
        mapStyleId="994a4d79082d3128d34c2152a0a3d8a8"
        :displayOptions="{
            indoor: false,
            poi: false,
            restrictCenter: false,
            skyColors: ['rgba(226, 237, 248, 0)', 'rgba(186, 211, 252, 0)']
        }"
        enableScrollWheelZoom
        :plugins="['Mapvgl', 'Mapv', 'mapv-three', 'TrackAnimation']"
        @pluginReady="handlePluginReady"
    />

去掉ref后打包到线上页面运行正常

<BMap
            :heading="360"
            :tilt="20"
            :zoom="17.6"
            :minZoom="3"
            :roam="true"
            :center="{ lat: 35.072849, lng: 118.335627 }"
            height="calc(100vh - 63px)"
            :restrictCenter="false"
            mapStyleId="994a4d79082d3128d34c2152a0a3d8a8"
            :displayOptions="{
                indoor: false,
                poi: false,
                restrictCenter: false,
                skyColors: ['rgba(226, 237, 248, 0)', 'rgba(186, 211, 252, 0)']
            }"
            enableScrollWheelZoom
            :plugins="['Mapvgl', 'Mapv', 'mapv-three', 'TrackAnimation']"
            @pluginReady="handlePluginReady"
        />
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容