react hooks使用Echarts圖表中遇到的情況及相關(guān)配置問題
前言
項(xiàng)目開發(fā)中,需要做一個(gè)報(bào)表功能,看了下UI圖,初步定下使用 echarts,不過之前使用 echarts 都是在 Vue2 和 Vue3 框架下開發(fā),第一次使用 react-hooks 開發(fā) echarts,將流程及一些 相關(guān)配置 寫個(gè)隨筆記錄下。
1、 下載 echarts 包
npm install echarts --save
2、引入eaharts
import * as echarts from 'echarts' // 引入 echarts 核心模塊
注意:
- 上面的引入寫法是 echarts V5版本的寫法,因?yàn)橄螺d默認(rèn)下載 V5版本
- 如果需要按需引入,請(qǐng)參考echarts 官網(wǎng)
效果圖如下所示:

3、使用
import * as echarts from 'echarts' // 引入 echarts 核心模塊
const index = () => {
const initChart = () => {
let chartDom: any = document.getElementById('chart')
let myChart = echarts.init(chartDom)
myChart.clear()
let option:any = null
option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
title: {
show: true,
text: '各廠手續(xù)辦理數(shù)量總覽',
left: 10,
top: 10,
},
dataZoom: [
{
type: 'slider', // slider 代表有滑塊,inside 代表內(nèi)置,左右滑動(dòng)
id: 'dataZoomX',
start: 0, // 數(shù)據(jù)窗口范圍的起始百分比。范圍是:0 ~ 100。表示 0% ~ 100%。
show: true, // 是否顯示下方滾動(dòng)條,默認(rèn)為true
realtime: true, // 是否實(shí)時(shí)更新
minValueSpan: 5, // 顯示數(shù)據(jù)的最小條數(shù)
maxValueSpan: 10, //顯示數(shù)據(jù)的最大條數(shù)
fillerColor: "#CED4DD", //滑動(dòng)塊的顏色
xAxisIndex: [0], // 表示這個(gè) dataZoom 組件控制 第一個(gè) xAxis
handleSize: 0, //滑動(dòng)條的 左右2個(gè)滑動(dòng)條的大小
height: 10, //組件高度
bottom: 0, // 控制滾動(dòng)條距離底部的位置;
borderColor: "#FAFAFA", // 邊框顏色
backgroundColor: "#FAFAFA", //兩邊未選中的滑動(dòng)條區(qū)域的顏色
showDataShadow: false, //是否顯示數(shù)據(jù)陰影 默認(rèn)auto
showDetail: false, //即拖拽時(shí)候是否顯示詳細(xì)數(shù)值信息 默認(rèn)true
filterMode: "filter",
brushSelect: false // 滾動(dòng)條上面的陰影
}
],
legend: {
top: 10,
right: 20
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
data: [], // 數(shù)組-數(shù)據(jù)
axisLabel: {
interval: 0,
},
}
],
yAxis: [
{
type: 'value',
// splitNumber: 5 // Y軸坐標(biāo)精度,默認(rèn)為5
}
],
series: [
{
name: '已完成',
type: 'bar',
stack: 'overlap',
label: {
show: true,
position: 'inside'
},
emphasis: {
focus: 'series'
},
data: [], 數(shù)組-數(shù)據(jù)
itemStyle: {
color: '#0194FE'
}
},
{
name: '辦理中',
type: 'bar',
stack: 'overlap',
emphasis: {
focus: 'series'
},
label: {
show: true,
position: 'inside'
},
data: [], 數(shù)組-數(shù)據(jù)
itemStyle: {
color: '#5CDBD3'
}
},
{
name: '未辦理',
type: 'bar',
stack: 'overlap', // stack: 'Ad', 好像也有同樣效果
emphasis: {
focus: 'series'
},
label: {
show: true,
position: 'inside'
},
data: [], 數(shù)組-數(shù)據(jù)
itemStyle: {
color: '#FFC53D'
}
},
]
};
myChart.resize()
option && myChart.setOption(option);
// 這個(gè)點(diǎn)擊事件只限制于 點(diǎn)擊柱形中有數(shù)據(jù)的部分,沒有數(shù)據(jù)的部分,點(diǎn)擊無效
myChart.on('click', function(params: any) {
handleGetBottomList(params.name, params.seriesName)
})
}
useEffect( () => {
initChart()
})
return (
<div id='chart'></div>
)
}
相關(guān)參數(shù)配置
1. 形成堆疊柱狀圖
在 series 配置中,將每一個(gè)柱的對(duì)象,其中的 stack 參數(shù),設(shè)置成一樣的 ‘overlap’ / ‘Ad’

2. 設(shè)置右上方的表頭的位置

3. 設(shè)置echarts 柱狀圖 橫向滾動(dòng)

4. X軸坐標(biāo) label 文字過長,無法顯示

- interval:間隔 每個(gè)坐標(biāo)之間的間隔,正常顯示設(shè)置 0 就可以了。
- rotate:偏移,也可以說是傾斜。值是number類型,視情況而定。
如果使用了偏移,可能會(huì)出現(xiàn)新的問題,就是左右邊距不夠文字會(huì)被遮擋一部分,這時(shí)候可以進(jìn)行如下配置。
grid: {
left:"20%", //grid 組件離容器左側(cè)的距離
right:"30px", //grid 組件離容器右側(cè)的距離
bottom:"20%" //grid 組件離容器下邊距的距離
}
5. 點(diǎn)擊柱狀圖,調(diào)用方法
如果項(xiàng)目開發(fā)中有這樣的需求:
點(diǎn)擊某一個(gè)柱狀圖,調(diào)用接口獲取柱狀圖的某些數(shù)據(jù),可以進(jìn)行這樣操作:
myChart.on('click', function(params: any) {
// params 為柱狀圖的參數(shù)
// 如果是普通柱狀圖,使用 params.name (對(duì)應(yīng)的x軸label) 參數(shù)
// 如果是折疊柱狀圖,使用 params.name params.seriesName (對(duì)應(yīng)的屬性)
// 如果還需要什么參數(shù),可以打印 params 查找
console.log('params', params)
})
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
React通過conetxt實(shí)現(xiàn)多組件傳值功能
Context 提供了一種在組件之間共享此類值的方式,而不必顯式地通過組件樹的逐層傳遞 props。本文給大家介紹React通過conetxt實(shí)現(xiàn)多組件傳值功能,感興趣的朋友一起看看吧2021-10-10
詳解webpack2+node+react+babel實(shí)現(xiàn)熱加載(hmr)
這篇文章主要介紹了詳解webpack2+node+react+babel實(shí)現(xiàn)熱加載(hmr) ,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-08-08
react中通過props實(shí)現(xiàn)父子組件間通信的使用示例
在React中,父組件可以通過props屬性向子組件傳遞數(shù)據(jù),子組件可以通過props屬性接收父組件傳遞過來的數(shù)據(jù),本文就來介紹一下如何實(shí)現(xiàn),感興趣的可以了解一下2023-10-10
React類組件中super()和super(props)的區(qū)別詳解
這篇文章給大家詳細(xì)介紹了React類組件中super()和super(props)有什么區(qū)別,文中通過代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-01-01
react-router實(shí)現(xiàn)跳轉(zhuǎn)傳值的方法示例
這篇文章主要給大家介紹了關(guān)于react-router實(shí)現(xiàn)跳轉(zhuǎn)傳值的相關(guān)資料,文中給出了詳細(xì)的示例代碼,對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。2017-05-05
React?正確使用useCallback?useMemo的方式
這篇文章主要介紹了React?正確使用useCallback?useMemo的方式,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-08-08
react無限滾動(dòng)組件的實(shí)現(xiàn)示例
本文主要介紹了react無限滾動(dòng)組件的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05

