在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实现五子棋游戏兼容各浏览器(附源码)
Apr 24 Javascript
js正文内容高亮效果的实现方法
Jun 30 Javascript
js将控件隐藏的方法及display属性介绍
Jul 04 Javascript
java与javascript之间json格式数据互转介绍
Oct 29 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
Aug 24 Javascript
vue将时间戳转换成自定义时间格式的方法
Mar 02 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
Mar 09 Javascript
JavaScript类的继承方法小结【组合继承分析】
Jul 11 Javascript
vue里的data要用return返回的原因浅析
May 28 Javascript
vue draggable resizable gorkys与v-chart使用与总结
Sep 05 Javascript
Antd中单个DatePicker限定时间输入范围操作
Oct 29 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
Oct 30 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中static静态变量的使用方法详解
2010/06/04 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
thinkPHP中U方法加密传递参数功能示例
2018/05/29 PHP
php生成word并下载代码实例
2019/03/15 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
提高 DHTML 页面性能
2006/12/25 Javascript
Javascript调用C#代码
2011/01/17 Javascript
23个Javascript弹出窗口特效整理
2011/02/25 Javascript
node.js使用require()函数加载模块
2014/11/26 Javascript
nodejs实现bigpipe异步加载页面方案
2016/01/26 NodeJs
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
ES6中Proxy代理用法实例浅析
2017/04/06 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
浅谈vue首屏加载优化
2018/06/28 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
分析并输出Python代码依赖的库的实现代码
2015/08/09 Python
深入学习python的yield和generator
2016/03/10 Python
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
Django中Middleware中的函数详解
2019/07/18 Python
python sorted方法和列表使用解析
2019/11/18 Python
python suds访问webservice服务实现
2020/06/26 Python
PyQt5 QDockWidget控件应用详解
2020/08/12 Python
python字典与json转换的方法总结
2020/12/28 Python
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
宝信软件JAVA工程师面试经历
2012/08/19 面试题
支部书记四风对照材料
2014/08/28 职场文书
办公室领导干部作风整顿个人整改措施
2014/09/17 职场文书
教师党员自我剖析材料
2014/09/29 职场文书
银行业务授权委托书
2014/10/10 职场文书
Vue3.0中Ref与Reactive的区别示例详析
2021/07/07 Vue.js
HttpClient实现文件上传功能
2022/08/14 Java/Android