echarts获取后台数据后未展开,x轴堆叠在一起

20 阅读1分钟

code.juejin.cn/api/raw/757… 核心原因;ECharts 初始化 / 容器尺寸计算时机与数据更新时机不同步

  • Vue 中数据更新后,DOM 并不会立即更新(Vue 会批量处理 DOM 更新,放在下一个事件循环)。
  • 如果你在数据请求完成后直接调用 setOption,此时容器的 DOM 可能还未完成尺寸调整,ECharts 基于旧的尺寸绘制,导致 X 轴挤压。 解决: $nextTick 仅能确保 Vue 层面的 DOM 更新,但容器的最终尺寸可能依赖其他异步逻辑(如父组件布局计算、CSS 动画 / 过渡未完成、动态加载的样式表)

updateChart() { if (!this.chartInstance) return; const finalOption = { ...defaultOption, ...this.option }; this.$nextTick(() => { // 先强制调整尺寸,再设置配置 this.chartInstance.resize(); this.chartInstance.setOption(finalOption); }); }

````updateChart() { if (!this.chartInstance) return; const finalOption = { ...defaultOption, ...this.option }; this.$nextTick(() => { // 先强制调整尺寸,再设置配置 this.chartInstance.resize(); this.chartInstance.setOption(finalOption); }); }`