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); }); }`