NodeJS + React + Webpack + Echarts
最近画了个简单的前端图,使用百度的echarts,基于原来项目的NodeJS+React+Webpack框架。在此记录一下:
1. 在react里封装echarts组件,并调用后端API。
(参考的是一个只有样本数据,无数据封装的例子,对于没有接触前端却要对接这个图的我,简直是折磨得不行)。
import React from 'react';
import { tablelineagenodes, tablelineagelinks } from 'actions';
import { connect } from 'react-redux';
import { push } from 'react-router-redux';
import { Button } from 'antd'; // 导入echarts
var echarts = require('echarts/lib/echarts') // 必须
require('echarts/lib/chart/sankey') // 图表类型
require('echarts/lib/component/tooltip') // echart插件
require('echarts/lib/component/title') // 标题插件
require('echarts/lib/component/grid') // echart插件 // 后端封装接口
@connect(
state => ({
nodes: state.tablelineagenodes.list,
links: state.tablelineagelinks.list
}), {
pushRouter: push,
queryTablelineagenodes: tablelineagenodes.queryTablelineagenodes,
queryTablelineagelinks: tablelineagelinks.queryTablelineagelinks
}
) class Lineage extends React.Component {
state = {context: '', isRender: false}; constructor(props) {
super(props)
this.setSankeyOption = this.setSankeyOption.bind(this)
this.initSankey = this.initSankey.bind(this)
} routeBuildRecord = _url => {
this.props.pushRouter(_url);
} initSankey() {
this.props.queryTablelineagenodes()
this.props.queryTablelineagelinks()
} componentDidMount() { // 取数
this.initSankey()
} componentDidUpdate() { // 画图
const {nodes, links} = this.props;
console.log(nodes)
console.log(links) if (nodes.length !== 0 && links.length !== 0) {
// 初始化echart
let myChart = echarts.init(document.getElementById("app"))
// 我们要定义一个setSankeyOption函数将data传入option里面
let options = this.setSankeyOption(nodes, links)
// 设置options
myChart.setOption(options)
}
} render() {
return (
<div className="sankey-react">
<div className="condition">
<Button type="primary" onClick={() => this.routeBuildRecord("/datacenter/datalineage")} >查询的实体血缘为空,重新修改查询吧</Button>
</div>
<div id="app" style={{width: "100%", height: "200px"}}></div>
</div>
)
} // 一个基本的echarts图表配置函数
setSankeyOption(nodes, links) {
return {
title: {
text: '实体血缘图'
},
tooltip: {
trigger: 'item',
triggerOn: 'mousemove'
},
animation: false,
grid: {
left: '5%',
right: '0',
top: '200px',
bottom: '5%',
containLabel: true
},
series: [
{
type: 'sankey',
layout: 'none',
radius: '10%',
center: ['50%', '50%'],
data: nodes,
links: links,
itemStyle: {
normal: {
borderWidth: 1,
borderColor: '#aaa'
}
},
lineStyle: {
normal: {
color: 'source',
curveness: 0.5
}
}
}
]
}
}
} export default Lineage;
2. 结果展示:

NodeJS + React + Webpack + Echarts的更多相关文章
- webpack+react实现echarts可视化配置
先上效果 开发环境要求 需要事先安装node及npm 前期准备 1.创建文件夹react-echarts-editor2.在项目根目录(以下称根目录)下创建src目录3.在项目根目录下创建dist目录 ...
- React + webpack 快速搭建开发环境
因网上大多React + webpack快速搭建的运行不起来,便自行写了一个.在搭建开发环境的前需安装nodejs,npm. 新建一个工作目录,比如叫reactdome,在reactdome目录中运行 ...
- nodejs+gulp+webpack基础知识
nodejs+gulp+webpack基础知识 2019年08月22日 11:49:40 天府云创 阅读数 22 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文 ...
- Webstorm+Webpack+echarts构建个性化定制的数据可视化图表&&两个echarts详细教程(柱状图,南丁格尔图)
Webstorm+Webpack+echarts ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(I ...
- 部署React+webpack工程的步骤
# 部署React+webpack工程的步骤ps:以Mac os系统做开发环境.因为npm现在使用灰常的慢,所以我使用淘宝境像cnpm. 1,准备工作: 先确保存已经安装了node.js: 2,文件部 ...
- scss + react + webpack + es6
scss + react + webpack + es6 写在前面: 刚学习完慕课网里的一个幻灯片案例,自己加了刚学的react,两者结合.首先让大家看看效果 点击此处 你可以先用纯js实现上面的效果 ...
- react +webpack 配置px2rem
项目背景需要适配ipad 以及手机端,这时候当然要告别刀耕火种时代啦(自己算rem),因为已经有成熟的工具啦,即px2rem(https://www.npmjs.com/package/px2rem) ...
- 真刀实战地搭建React+Webpack+Express搭建一个简易聊天室
一.前面bb两句 因为自惭(自残)webpack配置还不够熟悉,想折腾着做一个小实例熟悉.想着七夕快到了,做一个聊天室自己和自己聊天吧哈哈.好了,可以停止bb了,说一下干货. 二. 这个项目能学到啥? ...
- react+webpack+babel环境搭建
[react+webpack+babel环境搭建] 1.react官方文档推荐使用 babel-preset-react.babel-preset-es2015 两个perset. Babel官方文档 ...
随机推荐
- PL/SQL Developer 使用小技巧
1.PL/SQL Developer记住登陆密码 在使用PL/SQL Developer时,为了工作方便希望PL/SQL Developer记住登录Oracle的用户名和密码: 设置方法:tools- ...
- django1.10.3下admin后台管理老是显示object
在设置了一个新models phone book后,admin管理显示数据名称都是object 尝试为model重写__unicode__方法后无效,经查询,在py3环境中,需要重写__str__方法 ...
- 测试教程网.unittest教程.1. 基本概念
From:http://www.testclass.net/pyunit/basic_concept/ unittest是python自带的单元测试框架,有时候又被称为”PyUnit”,是python ...
- LeetCode——10. Regular Expression Matching
一.题目链接:https://leetcode.com/problems/regular-expression-matching/ 二.题目大意: 实现一个正则表达式,该正则表达式只有两种特殊的字符— ...
- 使用googletest进行C++单元测试(Netbeans为例)
googletest设置步骤(Netbeans为例) 下载googletest [https://github.com/google/googletest],解压到<gtest_dir> ...
- elasticsearch 口水篇(2)CRUD Sense
Sense 为了方便.直观的使用es的REST Api,我们可以使用sense.Sense是Chrome浏览器的一个插件,使用简单. 如图: Sense安装: https://chrome.googl ...
- Hive的UDF是什么?
首先我们学习hadoop的时候,为了让我们不太会java语言但是对SQL很熟悉的工程师能够操作基本的mapreduce计算过程,Hive被设计出来了.Hive就好比是hadoop在执行MR(mapre ...
- GPS获取坐标 显示Google map偏差计算
用手机获取GPS坐标 显示在手机地图偏差大约在100-200米左右,我把坐标放在 Maps.google.com 搜索坐标定位则相当精确. 可能是.....为了安全吧故意加的偏差 不过可以计算偏差使位 ...
- TextView-- 测量文字宽度
https://my.oschina.net/lengwei/blog/637380; http://blog.csdn.net/mare_blue/article/details/51388403; ...
- 搭建postgresql集群的问题汇总
问题一:如何配置pg远程访问 修改postgresql.conf-->listen_addresses = '*' 修改pg_hba.conf-->添加 ...