在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 相关文章推荐
基于SVG的web页面图形绘制API介绍及编程演示
Jun 28 Javascript
JavaScript实现维吉尼亚(Vigenere)密码算法实例
Nov 22 Javascript
jQuery实现的一个tab切换效果内部还嵌有切换
Aug 10 Javascript
js读取cookie方法总结
Oct 31 Javascript
Javascript Object 对象学习笔记
Dec 17 Javascript
JavaScript定时显示广告代码分享
Mar 02 Javascript
javascript中setAttribute()函数使用方法及兼容性
Jul 19 Javascript
JS实现兼容性较好的随屏滚动效果
Nov 09 Javascript
详解React 的几种条件渲染以及选择
Oct 23 Javascript
JavaScript this绑定过程深入详解
Dec 07 Javascript
layui扩展上传组件模拟进度条的方法
Sep 23 Javascript
AJAX XMLHttpRequest对象创建使用详解
Aug 20 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 mail 通过Windows的SMTP发送邮件失败的解决方案
2009/05/27 PHP
PHP生成Flash动画的实现代码
2010/03/12 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
stripos函数知识点实例分享
2019/02/11 PHP
php生成word并下载代码实例
2019/03/15 PHP
Javascript核心读书有感之词法结构
2015/02/01 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
JavaScript之生成器_动力节点Java学院整理
2017/06/30 Javascript
node 文件上传接口的转发的实现
2019/09/23 Javascript
使用p5.js实现动态GIF图片临摹重现
2019/10/23 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
vuex实现购物车功能
2020/06/28 Javascript
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
python3爬虫之设计签名小程序
2018/06/19 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
python两个_多个字典合并相加的实例代码
2019/12/26 Python
python要安装在哪个盘
2020/06/15 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
英国奢华护肤、美容和Spa品牌:Temple Spa
2019/11/02 全球购物
教师实习的自我鉴定
2013/10/26 职场文书
物流管理应届生求职信
2013/11/07 职场文书
女儿十岁生日答谢词
2014/01/27 职场文书
大学秋游活动方案
2014/02/11 职场文书
中学生运动会入场词
2014/02/12 职场文书
升国旗仪式主持词
2014/03/19 职场文书
个人租房协议书
2014/11/28 职场文书
2016党校培训心得体会
2016/01/07 职场文书
Python3接口性能测试实例代码
2021/06/20 Python
阿里云服务器部署RabbitMQ集群的详细教程
2022/06/01 Servers
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis