react 图表库 滚动_echarts-for-react中数据发生变化,如何让图表实时更新。

本文探讨了在React应用中使用Echarts组件时遇到的数据变化但图表无法实时刷新的问题。通过分析代码,可以看到在点击图表时,数据已经更新,但由于Echarts实例未重新渲染,导致图表未显示最新数据。解决方法包括正确设置`onEvents`属性以监听并处理图表点击事件,确保`setState`更新数据后图表能够重新绘制。
摘要由CSDN通过智能技术生成

### 点击图表的时候,data数据发生了变化,图表不能实时刷新?

import React from 'react';

import { Card } from 'antd';

import ReactEchartsCore from 'echarts-for-react/lib/core';

import echarts from 'echarts/lib/echarts';

import 'echarts/lib/chart/pie';

echarts.registerTheme('myTheme',{

backgroundColor: 'rgb(15,55,95)'

});

export default class Bar extends React.Component{

constructor(props){

super(props);

this.state={

loadingChart:true,

data:[

{ value: 500, name: 'Android' },

{ value: 200, name: 'IOS' },

{ value: 360, name: 'PC' },

{ value: 100, name: 'Ohter' }

]

}

}

onChartClick=()=>{

const data=this.state.data;

data.push({

value:Math.random()*100,

name:'Other'+Math.random()

});

this.setState({

data

});

}

onChartLegendselectchanged = () => {

console.log(2)

}

// 方法必须放在上面,不然找不到对应的方法

onEvents = {

'click': this.onChartClick,

'legendselectchanged': this.onChartLegendselectchanged

}

// 获取配置

getOption=()=>{

const option = {

title:{

text:'ECharts 数据统计'

},

lengend:{},

series:[{

name:'访问量',

type:'pie',

radius:'60%',

data:this.state.data

}]

};

return option;

}

// charts loadReady后的回调 模拟回调

onChartReadyCallback=()=>{

setTimeout(()=>{

this.setState({

loadingChart: false

});

} ,2000);

}

render(){

return (

{JSON.stringify(this.state.data)}

echarts={echarts}

style={{ height: '500px' }}

className='noneClass'

theme='light'

onChartReady={this.onChartReadyCallback}

option={this.getOption()}

showLoading={this.state.loadingChart}

onEvents={this.onEvents}

lazyUpdate={(this.getOption(),false)}

>

)

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值