在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 相关文章推荐
javascript 表单规则集合对象
Jul 21 Javascript
JS 中document.URL 和 windows.location.href 的区别
Nov 11 Javascript
jquery实现每个数字上都带进度条的幻灯片
Feb 20 Javascript
js 跳出页面的frameset框架示例介绍
Dec 23 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
Dec 30 Javascript
不使用jquery实现js打字效果示例分享
Jan 19 Javascript
js运动应用实例解析
Dec 28 Javascript
Javascript 6里的4个新语法
Aug 25 Javascript
ES6新数据结构Set与WeakSet用法分析
Mar 31 Javascript
深入浅析Node环境和浏览器的区别
Aug 14 Javascript
vue  directive定义全局和局部指令及指令简写
Nov 20 Javascript
VUEX采坑之路之获取不到$store的解决方法
Nov 08 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
一个程序下载的管理程序(一)
2006/10/09 PHP
PHP入门学习笔记之一
2010/10/12 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
ubuntu下配置nginx+php+mysql详解
2015/09/10 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
20行代码实现的一个CSS覆盖率测试脚本
2013/07/07 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
微信小程序入门教程
2016/11/18 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
Vue监听数组变化源码解析
2017/03/09 Javascript
动态加载、移除js/css文件的示例代码
2018/03/20 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
2018/10/12 Javascript
微信小程序开发实现的IP地址查询功能示例
2019/03/28 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
2019/09/12 Javascript
vue 项目@change多个参数传值多个事件的操作
2021/01/29 Vue.js
[06:16]第十四期-国士无双绝地翻盘之撼地神牛
2014/06/24 DOTA
Python中return语句用法实例分析
2015/08/04 Python
Python中pygame的mouse鼠标事件用法实例
2015/11/11 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
python实现括号匹配的思路详解
2018/08/23 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
css3 给背景设置渐变色的方法
2019/09/12 HTML / CSS
网络工程专业毕业生推荐信
2013/10/28 职场文书
仓库主管的岗位职责
2013/12/04 职场文书
生产总经理岗位职责
2013/12/19 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
2015年教师新年寄语
2014/12/08 职场文书
教师岗位职责
2015/02/03 职场文书
光荣之路观后感
2015/06/12 职场文书
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js