vue 中 Echarts 视图动态更新

vue 中 Echarts 视图动态更新

需求:父组件中数据跟新,子组件视图更新。
思路:子组件watch监听 props数据的变更,当监听到变更时,重新加载 options配置。
所以父组件只需要更新数据,子组件来接收监听

<template>
  <div>
    <div :id="id" style="width:100%; height: 100%"></div>
  </div>
</template>
<script>
export default {
  name: 'barCharts',
  props: {
      id: {
      type: String
    },
    data: {
      type: Array
    },
  },
  watch: {
    data: {
      handler(newValue, oldValue) {
        console.log('newValue', newValue)
        console.log('oldValue', oldValue)
        this.initLine() // 数据更新触发
      },
      deep: true // 深度监听
    }
  },

  data() {
    return {}
  },
  methods:{
	initLine() {
	let option = {
		...... // 视图配置项,这里简单写一些
		grid: {
          	top: 20,
          	bottom: 30,
          	left: 0,
          	right: 0
        },
        tooltip: {
        	show:false
        },
        xAxis: {
        	type: 'category'
        },
        yAxis:{
        	type: 'value'
        },
        series:{
        	data:this.data, // 监听这里 更改视图
        	type: 'bar', // 这里举例为柱状图
        }
        
	}
	let myChart = this.$echarts.init(document.getElementById('视图id,动态传入'), null, { renderer: 'svg' });
	myChart.setOption(option)
	}
   },
	
	
  mounted() {
    this.initLine();
  }
}
</script>

完美解决,可封装为组件,供多个同时调用,这里就不贴出来了😊

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3使用ECharts创建柱状图动态调整柱状图的宽度(即柱宽),你可以通过监听视图的变化(比如数据变化)并在渲染函数更新图表配置来实现。这里是一个基本步骤: 1. 首先,在组件的data里定义初始的柱状图配置,包括系列的数据、柱宽等: ```javascript export default { data() { return { chartConfig: { series: [ { // 柱状图系列 type: 'bar', data: [], // 初始数据数组 barWidth: 20, // 初始柱宽 } ] }, // 其他数据 }; }, }; ``` 2. 当数据发生变化时,你在`watch`或者`reactive`监听数据,并在回调函数更新柱宽: ```javascript import { ref } from 'vue'; // ... computed: { // 如果是响应式计算属性 computedData() { // 对你的数据进行处理 // ... return processedData; }, }, watch: { computedData(newData) { this.updateChartWidth(newData); }, }, methods: { updateChartWidth(newData) { const { series } = this.chartConfig.series; series.data = newData; // 更新数据 series.barWidth = adjustBarWidth(newData.length); // 根据新的数据长度动态调整柱宽 }, // 你可以在这里定义一个函数来计算适当的柱宽,如平均值的倒数或其他策略 adjustBarWidth(length) { return Math.floor(100 / length); // 这只是一个示例,实际可以根据需求调整算法 }, }, ``` 在这个例子,`adjustBarWidth`函数简单地假设每个柱子的宽度是总宽度除以数据的数量。你可以根据需要修改这个函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值