在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 相关文章推荐
How to Auto Include a Javascript File
Feb 02 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
Jan 24 Javascript
jQuery验证插件 Validate详解
Nov 20 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
Mar 04 Javascript
Javascript基于AJAX回调函数传递参数实例分析
Dec 15 Javascript
深入理解JavaScript中Ajax
Aug 02 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
Sep 08 Javascript
基于JavaScript实现轮播图原理及示例
Apr 10 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
Aug 17 Javascript
利用vue组件自定义v-model实现一个Tab组件方法示例
Dec 06 Javascript
React从react-router路由上做登陆验证控制的方法
May 10 Javascript
vue中使用element组件时事件想要传递其他参数的问题
Sep 18 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
239军机修复记
2021/03/02 无线电
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
2010/06/21 PHP
php魔术变量用法实例详解
2014/11/13 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
PHP的curl函数的用法总结
2019/02/14 PHP
JavaScript触发器详解
2007/03/10 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
2013/02/02 Javascript
jquery使用经验小结
2015/05/20 Javascript
让JavaScript中setTimeout支持链式操作的方法
2015/06/19 Javascript
vue router仿天猫底部导航栏功能
2017/10/18 Javascript
JavaScript文档加载模式以及元素获取
2020/07/28 Javascript
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
2018/03/05 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
python实现决策树分类(2)
2018/08/30 Python
Python中logging实例讲解
2019/01/17 Python
python实现爬山算法的思路详解
2019/04/09 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
Python实现疫情通定时自动填写功能(附代码)
2020/05/27 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
中国医药集团国药在线:国药网
2017/02/06 全球购物
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
手机业务员岗位职责
2013/12/13 职场文书
医学类个人求职信范文
2014/02/05 职场文书
工厂总经理岗位职责
2014/02/07 职场文书
法制宣传月活动总结
2014/04/29 职场文书
基层党建工作汇报材料
2014/08/15 职场文书
爱国主义教育演讲稿
2014/08/26 职场文书
学生实习证明范文
2014/09/28 职场文书
工商局领导班子存在的问题整改措施思想汇报
2014/10/05 职场文书
技术负责人岗位职责
2015/02/10 职场文书
教师年度个人总结
2015/02/11 职场文书
信仰纪录片观后感
2015/06/08 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书