在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 相关文章推荐
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
May 21 Javascript
JS对img标签进行优化使用onerror显示默认图像
Apr 24 Javascript
jquery实现简单的自动播放幻灯片效果
Jun 13 Javascript
JavaScript中数组的合并以及排序实现示例
Oct 24 Javascript
jquery 正整数数字校验正则表达式
Jan 10 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
Sep 07 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
Apr 18 Javascript
使用async await 封装 axios的方法
Jul 09 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
Nov 21 Javascript
小程序多图列表实现性能优化的方法步骤
May 28 Javascript
小程序input数据双向绑定实现方法
Oct 17 Javascript
vue瀑布流组件实现上拉加载更多
Mar 10 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
PHP 命名空间实例说明
2011/01/27 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
YII模块实现绑定二级域名的方法
2014/07/09 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
js通过地址栏给action传值(中文乱码全是问号)
2013/05/02 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
2013/12/24 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
用JavaScript实现对话框的教程
2015/06/04 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
JavaScript缓冲运动实现方法(2则示例)
2016/01/08 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
Python xlwt设置excel单元格字体及格式
2020/04/18 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
2018/01/02 Python
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
如何在Django项目中引入静态文件
2019/07/26 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
python针对Oracle常见查询操作实例分析
2020/04/30 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
土木工程毕业生自荐信
2013/09/21 职场文书
函授本科自我鉴定
2013/11/03 职场文书
客户接待方案
2014/02/26 职场文书
建筑院校毕业生求职信
2014/06/13 职场文书
自我查摆剖析材料
2014/10/11 职场文书
2014年人事部工作总结
2014/12/03 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
2016学习依法治国心得体会
2016/01/15 职场文书
Mysql数据库索引面试题(程序员基础技能)
2021/05/31 MySQL
浅谈JavaScript作用域
2021/12/06 Javascript
Python中第三方库Faker的使用详解
2022/04/02 Python