在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 each打印JS对象的方法
Nov 13 Javascript
javascript函数作用域学习示例(js作用域)
Jan 13 Javascript
js实现简单的联动菜单效果
Aug 19 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
Aug 24 Javascript
简单的jQuery banner图片轮播实例代码
Mar 04 Javascript
jquery获取img的src值的简单实例
May 17 Javascript
jQuery事件绑定用法详解
Sep 08 Javascript
Json按某个键的值进行排序
Dec 22 Javascript
详解jquery选择器的原理
Aug 01 jQuery
vue.js 使用axios实现下载功能的示例
Mar 05 Javascript
vue项目国际化vue-i18n的安装使用教程
Mar 14 Javascript
Node.js 实现抢票小工具 &amp; 短信通知提醒功能
Oct 22 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
分享10段PHP常用代码
2015/11/11 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
Javascript Object.extend
2010/05/18 Javascript
当jQuery遭遇CoffeeScript的时候 使用分享
2011/09/17 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
javascript+canvas制作九宫格小程序
2014/12/28 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
jquery dialog获取焦点的方法
2017/02/09 Javascript
对vue中methods互相调用的方法详解
2018/08/30 Javascript
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
Vue如何提升首屏加载速度实例解析
2020/06/25 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
原生js实现照片墙效果
2020/10/13 Javascript
用Python写一段用户登录的程序代码
2018/04/22 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
Django1.11自带分页器paginator的使用方法
2019/10/31 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
没编程基础可以学python吗
2020/06/17 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
Django解决frame拒绝问题的方法
2020/12/18 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
高分子材料个人求职信范文
2013/09/25 职场文书
会计学个人自荐信模板
2013/12/13 职场文书
教师演讲稿范文
2014/01/08 职场文书
推荐信格式要求
2014/05/09 职场文书
优秀团干部个人事迹
2014/05/29 职场文书
总经理人事任命书
2014/06/05 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
储备店长岗位职责
2015/04/14 职场文书
小学校本教研总结
2015/08/13 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书