在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 表单验证扩展代码(二)
Oct 20 Javascript
div模拟选择框示例代码
Nov 03 Javascript
JavaScript打印网页指定区域的例子
May 03 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
May 11 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
Jan 25 Javascript
基于jQuery插件实现点击小图显示大图效果
May 11 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
Jun 12 Javascript
bootstrap table小案例
Oct 21 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
Nov 14 Javascript
jQuery实现轮播图效果
Nov 26 jQuery
js实现小球在页面规定的区域运动
Jun 16 Javascript
javascript的hashCode函数实现代码小结
Aug 11 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去除HTML标签实例
2013/11/06 PHP
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
javascript对象之内置对象Math使用方法
2010/04/16 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
读jQuery之三(构建选择器)
2011/06/11 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
2014/06/06 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
使用JavaScript获取地址栏参数的方法
2014/12/19 Javascript
javascript元素动态创建实现方法
2015/05/13 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
2015/11/02 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
bootstrap实现图片自动轮播
2016/12/21 Javascript
js判断PC端与移动端跳转
2020/12/24 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
nodejs制作小爬虫功能示例
2020/02/24 NodeJs
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
Python中使用Tkinter模块创建GUI程序实例
2015/01/14 Python
python插入数据到列表的方法
2015/04/30 Python
详解Python的Django框架中的模版继承
2015/07/16 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
TensorFlow实现创建分类器
2018/02/06 Python
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
python 调用有道api接口的方法
2019/01/03 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
英语文学专业学生的自我评价
2013/10/31 职场文书
主管会计岗位职责
2014/03/13 职场文书
超市客服工作职责
2014/06/11 职场文书
《槐乡的孩子》教学反思
2016/02/20 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
QT与javascript交互数据的实现
2021/05/26 Javascript
python基础之类方法和静态方法
2021/10/24 Python