在React 组件中使用Echarts的示例代码


Posted in Javascript onNovember 08, 2017

在完成一个需求的时候碰到一个场景需要使用柱状图。涉及到可视化,第一反应当然是Echarts了。平时用js加载Echarts组件很方便,但是在React中就要费下神了。各种连蒙带猜实现了。edmo里的

这里我们要在自己搭建的react项目中使用ECharts,我们可以在ECharts官网上看到有一种方式是在 webpack 中使用 ECharts,我们需要的就是这种方法。

我们在使用ECharts之前要先安装ECharts,在以往的开发模式中,我们很多使用就是把官网中的ECharts的核心js文件导入到我们的html或者是jsp等文件里面,但是在react项目中,我们可以直接使用node.js的npm命令安装:

npm install echarts --save

Echarts的例子就是Echarts文档上介绍的最简单的应用。

render:function() {
    
  var info = 1;

    return (  
      <div className="mt15 xui-financialAnalyse-page">   
        <div className="xui-general">
          <Chart data={info} data-info={info} />
        </div>
      </div>
    )
  }

这是调用Echarts组件的地方,给里面传了2个属性(data-开头是H5定义的规范)

var Chart = React.createClass({
  getInitialState: function() {
    this.token = Store.addListener(this.onChangeData);
    return {}
  },

  componentWillMount: function() {
    var info = this.props.data; 
    //HTML5规定自定义属性要以data-开头,这样的可以如下取
    console.log(this.props['data-info']) 
    Action.getInfo(info);
  },


   componentDidUpdate: function() {

 this.showChart(this.state.data)
   },

   onChangeData: function() {
    var data = Store.getData();
    this.setState({
      data: data['info']['data'] //后台返回的数据
    });
  },

   showChart: function(dataSet){
    var myChart = echarts.init(document.getElementById('main'));

    var option = {
        title: {
        text: 'ECharts 入门示例'
      },
      color: ['#3398DB'],
      tooltip : {
        trigger: 'axis',
        axisPointer : {    
          type : 'shadow' 
        }
      },
      grid: {
        left: '3%',
        right: '4%',
        bottom: '3%',
        containLabel: true
      },
      xAxis : [
        {
          type : 'category',
          data : ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
          axisTick: {
            alignWithLabel: true
          }
        }
      ],
      yAxis : [
        {
          type : 'value'
        }
      ],
      series : [
        {
          name:'你好',
          type:'bar',
          barWidth: '60%',
          data: dataSet
        }
      ]
    };

    myChart.setOption(option);
   },

   render: function() {
    return (
       <div id="main" style={{width: 500, height:500}}></div>
    )
  }
});

上面是完整的demo Echarts组件的代码,主要是利用了React根据不同状态(3种状态)提供的处理函数(一共有5种)。

1、componentWillMount:在插入真实DOM之前发起Action,向后端请求数据。

2、onChangeStore:在数据变更的时候更新数据,并在getInitialState中加入监听Store中数据变化的监听器。

3、componentDidUpdate:在数据被重新渲染之后,触发showChart()方法绘制canvas。

4、showChart:配置Echarts,具体配置信息可以参考Echarts文档

5、如果组件生命周期结束,那么要加上如下代码:

componentWillUnmount: function() {
    this.token.remove();
  },

否则会报错: Warning: setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op. Please check the code for the undefined component.

最后附上效果图:

 在React 组件中使用Echarts的示例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery 表格操作(交替显示、拖动表格行、选择行等)
Jul 29 Javascript
解决jQuery插件tipswindown与hintbox冲突
Nov 05 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
Jan 20 Javascript
JavaScript中的Truthy和Falsy介绍
Jan 01 Javascript
使用JS读取XML文件的方法
Nov 25 Javascript
微信小程序之小豆瓣图书实例
Nov 30 Javascript
jquery与ajax获取特殊字符实例详解
Jan 08 Javascript
jQuery中map函数的两种方式
Apr 07 jQuery
详解基于Node.js的HTTP/2 Server实践
May 31 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
Sep 03 Javascript
利用不到200行代码写一款属于你自己的js类库
Jul 08 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
Sep 05 Javascript
浅谈mint-ui loadmore组件注意的问题
Nov 08 #Javascript
es6在react中的应用代码解析
Nov 08 #Javascript
mac中利用NVM管理不同node版本的方法详解
Nov 08 #Javascript
浅谈vue-router2路由参数注意的问题
Nov 08 #Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
Nov 08 #jQuery
javaScript之split与join的区别(详解)
Nov 08 #Javascript
AngularJs 终极购物车(实例讲解)
Nov 08 #Javascript
You might like
smtp邮件发送一例
2006/10/09 PHP
一个PHP数组应该有多大的分析
2009/07/30 PHP
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
2014/06/19 PHP
PHP中使用SimpleXML检查XML文件结构实例
2015/01/07 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
简短几句 通俗解释javascript的闭包
2011/01/17 Javascript
javascript闭包入门示例
2014/04/30 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
2014/12/29 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
javascript新闻跑马灯实例代码
2020/07/29 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
Web打印解决方案之证件套打的实现思路
2016/08/29 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
python中如何使用正则表达式的集合字符示例
2017/10/09 Python
Python判断telnet通不通的实例
2019/01/26 Python
keras输出预测值和真实值方式
2020/06/27 Python
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
中东地区为妈妈们提供一切的头号购物目的地:Sprii
2018/05/06 全球购物
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
事业单位请假制度
2014/01/13 职场文书
药品采购员岗位职责
2014/02/08 职场文书
七一讲话心得体会
2014/09/05 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
求职信:求职应该注意的问题
2019/04/24 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS
Redis 的查询很快的原因解析及Redis 如何保证查询的高效
2022/03/16 Redis