首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击图表上的数据点的echarts-for-react调用组件。

问单击图表上的数据点的echarts-for-react调用组件。
EN

Stack Overflow用户
提问于 2018-10-11 05:03:11
回答 4查看 6.6K关注 0票数 4

我正在使用echarts和react,使用echarts来做出反应。我想调用一个组件,点击图形上的一个点,如何实现这一点,还有什么是传说,我阅读了文档,但无法理解它。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-10-17 10:19:49

您可以将一个对象作为onEvents支柱传递给ReactEcharts组件。

代码语言:javascript
复制
<ReactEcharts ref={(e) => { this.echarts_react = e; }}
    onEvents= {this._onEvents}
/>

在这里,_onEvents可以像

代码语言:javascript
复制
_onEvents = {
  'click': this.onChartClick,
  'dataZoom': this.onDataZoom,
}

和

代码语言:javascript
复制
onChartClick = (params)=>{
    // Do what you want to do on click event. params depend on the  type of  chart 
}
票数 8
EN

Stack Overflow用户

发布于 2021-10-31 18:49:02

我发现这两个答案都不完整,所以这是我的。

我正在使用echarts v5。

TLDR:如果使用类组件,不要忘记将回调绑定到对象

功能组件

代码语言:javascript
复制
import React from 'react';
import ReactECharts from 'echarts-for-react';

function MyComp(props) {

  const options = { ... }

  const onChartClick = (params) => {
    console.log('Chart clicked', params);
  };

  const onEvents = {
    click: onChartClick,
  };

  return (
    <ReactECharts
      option={options}
      onEvents={onEvents}
    />
  );
}

类组件

代码语言:javascript
复制
import React from 'react';
import ReactECharts from 'echarts-for-react';

class MyComp extends React.Component {
constructor(props) {
    super(props);

    this.options = { ... };
    this.onChartClick = this.onChartClick.bind(this);
  }
  
  onChartClick = (params) => {
    console.log('Chart clicked', params);
  };

  onEvents = {
    click: this.onChartClick
  }


  render() {
    return (
      <ReactECharts
        option={this.options}
        onEvents={this.onEvents}
      />
    );
  }
}
票数 6
EN

Stack Overflow用户

发布于 2018-12-27 09:08:20

onEvents支柱不能正常工作,尝试获取echarts的引用,并将您的事件添加到zr对象中,如下所示:

代码语言:javascript
复制
import React, {Component} from 'react';
import './App.css';
import ReactEcharts from "echarts-for-react";

class App extends Component {
    constructor(props, context) {
        super(props, context);

        this.state = {
            graphOption: {
                xAxis: {
                    type: 'category',
                    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
                },
                yAxis: {
                    type: 'value'
                },
                series: [{
                    data: [820, 932, 901, 934, 1290, 1330, 1320],
                    type: 'line'
                }]
            }
        }
    }

    componentDidMount() {
        this.echartsInstance = this.echartsReactRef.getEchartsInstance();
        this.zr = this.echartsInstance.getZr();

        this.zr.on('click', this.onChartClick);
    }

    onChartClick = (...rest) => {
        console.log('App:onClickChart', rest);
    };

    render() {
        return (
            <div className="App">
                <header className="App-header">

                    <ReactEcharts
                        style={{height: '100vh', width: '100vw'}}
                        ref={(e) => {
                            this.echartsReactRef = e;
                        }}
                        option={this.state.graphOption}
                    />
                </header>
            </div>
        );
    }
}

export default App;
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52752552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档