react框架 echarts 自动轮播选中

import React, { Component } from 'react';
import PropTypes from 'prop-types';
import R from 'ramda';

import echarts from 'echarts/lib/echarts';

class ChartTip extends Component {
  constructor(props) {
    super(props);
  };

  componentDidMount() {
    this.ChartTip = echarts.init(this.chartDiv);
    if(this.props.getChart){
      this.props.getChart(this.ChartTip);
    }
    debugger
    var option = this.props.option;
    var chart = this.ChartTip;
    //轮播展示
    var currentIndex = -1;
    setInterval(function() {
      var dataLen = option.series[0].data.length;
      // 取消之前高亮的图形
      chart.dispatchAction({
        type: 'downplay',
        seriesIndex: 0, //表示series中的第几个data数据循环展示
        dataIndex: currentIndex
      });
      currentIndex = (currentIndex + 1) % dataLen; //+1表示每次跳转一个
      // 高亮当前图形
      chart.dispatchAction({
        type: 'highlight',
        seriesIndex: 0,
        dataIndex: currentIndex
      });
      // 显示 tooltip
      chart.dispatchAction({
        type: 'showTip',
        seriesIndex: 0,
        dataIndex: currentIndex
      });
    }, 6000);
    this.ChartTip.setOption(this.props.option);
  }
  componentWillUnmount() {
    this.ChartTip.clear();
    this.ChartTip.dispose();
    this.chartDiv = null;
    // Chart.on('click'.this.handleClick);
    }

  componentWillReceiveProps(nextProps) {
    if (this.ChartTip) {
      this.ChartTip.resize();
      if (!R.equals(nextProps, this.props)) {
        this.ChartTip.setOption(nextProps.option);
      }else{
        if(this.props.autoAnimate){
          let tempOp = this.chart.getOption();
          this.ChartTip.clear();
          this.ChartTip.setOption(tempOp);
        }
      }
    }
  }
  render() {
    return (
      <div ref={(chartDiv)=>{this.chartDiv=chartDiv;}}
           style={this.props.style} className = {this.props.className}
      >
      </div>
    );
  }
};

ChartTip.propTypes = {
  option: PropTypes.object.isRequired
}

export default ChartTip;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值