记录—Echarts组件库宽度自适应渲染问题

1,459 阅读1分钟

✍需求背景

在日常开发中经常会遇到需要用到图表展示的地方,Echarts图表库是当下流行的一个图标库,在使用过程中,会遇到一些问题,下面分享一下我遇到的一个值得记录的问题:

在开发图表需求的时候,经常需要图表能够自适应页面,但是Echarts使用的时候,会遇到这么个问题:

当我设置图表width为50%的时候,发现下层元素无法识别%,会渲染成px,也就是50px。

✔解决方案:

查询网上很多资料都说是源码无法识别%, 然后需要自己动态获取,后来自己测试了一下,发现其实是可以设置的,只不过导致宽度没有被撑开的原因是echarts图表init的时候,父元素还没有宽度,例如tag页,例如一些特殊的页面,总之如果想要自适应百分比,则需要在父元素有宽度时候才初始化,这里可以用nextTick进行处理。

✨tip:

但是只是初始化显然不能达到自适应页面的需求,我们可以结合

echart提供的resize(),以及window.addEventListener('resize', fn)实现。

这个记得用this.$once('hook:beforeDestroy')进行销毁监听。

👀相关代码:

    // 自适应
    const handler = () => echart.resize()
    window.addEventListener('resize', handler)
    this.$once('hook:beforeDestroy', () => {
        window.removeEventListener('resize', handler)
    })