Vue3 + Echarts 数据更新,但视图没有立即更新,而是在下次更新

bug记录:接口异步获取更新数据后,echarts视图没有更新,在下次打开页面后才更新视图。

echarts视图更新是 setOption方法,vue3需要我们在onMounted生命周期和更新(watch)时使用。如果没有视图,查看这两步是否有触发。有视图但是没有更新视图,是 watch 里的setOption没有触发。查看 watch 是否监听到所要更新的数据。因为我是只更新一部分数据,所以开启deep深度监听数据变化。

<template>
  <div ref="main" :style="{'height':height,'width': width}" />
</template>

<script lang="ts" setup>
import { ref, watch } from 'vue';
//  按需引入 echarts
import * as echarts from 'echarts';

const main = ref(); // 使用ref创建虚拟DOM引用,使用时用main.value
const props = defineProps<any>();

onMounted(
  () => {
    init();
  },
);
const init = () => {
  // 基于准备好的dom,初始化echarts实例
  const myChart = echarts.init(main.value);
  // 指定图表的配置项和数据
  const options:any = props.option;
  // 使用刚指定的配置项和数据显示图表。
  myChart.setOption(options, true);
};
watch(() => props.option, (newVal, oldVal) => {
  init();
}, { deep: true });
</script>
<style scoped>
</style>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值