react hooks使用Echarts圖表中遇到的情況及相關配置問題
前言
項目開發(fā)中,需要做一個報表功能,看了下UI圖,初步定下使用 echarts
,不過之前使用 echarts
都是在 Vue2
和 Vue3
框架下開發(fā),第一次使用 react-hooks
開發(fā) echarts,將流程及一些 相關配置 寫個隨筆記錄下。
1、 下載 echarts 包
npm install echarts --save
2、引入eaharts
import * as echarts from 'echarts' // 引入 echarts 核心模塊
注意:
- 上面的引入寫法是 echarts V5版本的寫法,因為下載默認下載 V5版本
- 如果需要按需引入,請參考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 代表內置,左右滑動 id: 'dataZoomX', start: 0, // 數(shù)據(jù)窗口范圍的起始百分比。范圍是:0 ~ 100。表示 0% ~ 100%。 show: true, // 是否顯示下方滾動條,默認為true realtime: true, // 是否實時更新 minValueSpan: 5, // 顯示數(shù)據(jù)的最小條數(shù) maxValueSpan: 10, //顯示數(shù)據(jù)的最大條數(shù) fillerColor: "#CED4DD", //滑動塊的顏色 xAxisIndex: [0], // 表示這個 dataZoom 組件控制 第一個 xAxis handleSize: 0, //滑動條的 左右2個滑動條的大小 height: 10, //組件高度 bottom: 0, // 控制滾動條距離底部的位置; borderColor: "#FAFAFA", // 邊框顏色 backgroundColor: "#FAFAFA", //兩邊未選中的滑動條區(qū)域的顏色 showDataShadow: false, //是否顯示數(shù)據(jù)陰影 默認auto showDetail: false, //即拖拽時候是否顯示詳細數(shù)值信息 默認true filterMode: "filter", brushSelect: false // 滾動條上面的陰影 } ], 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軸坐標精度,默認為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); // 這個點擊事件只限制于 點擊柱形中有數(shù)據(jù)的部分,沒有數(shù)據(jù)的部分,點擊無效 myChart.on('click', function(params: any) { handleGetBottomList(params.name, params.seriesName) }) } useEffect( () => { initChart() }) return ( <div id='chart'></div> ) }
相關參數(shù)配置
1. 形成堆疊柱狀圖
在 series
配置中,將每一個柱的對象,其中的 stack
參數(shù),設置成一樣的 ‘overlap’ / ‘Ad’
2. 設置右上方的表頭的位置
3. 設置echarts 柱狀圖 橫向滾動
4. X軸坐標 label 文字過長,無法顯示
- interval:間隔 每個坐標之間的間隔,正常顯示設置 0 就可以了。
- rotate:偏移,也可以說是傾斜。值是number類型,視情況而定。
如果使用了偏移,可能會出現(xiàn)新的問題,就是左右邊距不夠文字會被遮擋一部分,這時候可以進行如下配置。
grid: { left:"20%", //grid 組件離容器左側的距離 right:"30px", //grid 組件離容器右側的距離 bottom:"20%" //grid 組件離容器下邊距的距離 }
5. 點擊柱狀圖,調用方法
如果項目開發(fā)中有這樣的需求:
點擊某一個柱狀圖,調用接口獲取柱狀圖的某些數(shù)據(jù),可以進行這樣操作:
myChart.on('click', function(params: any) { // params 為柱狀圖的參數(shù) // 如果是普通柱狀圖,使用 params.name (對應的x軸label) 參數(shù) // 如果是折疊柱狀圖,使用 params.name params.seriesName (對應的屬性) // 如果還需要什么參數(shù),可以打印 params 查找 console.log('params', params) })
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
詳解webpack2+node+react+babel實現(xiàn)熱加載(hmr)
這篇文章主要介紹了詳解webpack2+node+react+babel實現(xiàn)熱加載(hmr) ,非常具有實用價值,需要的朋友可以參考下2017-08-08react中通過props實現(xiàn)父子組件間通信的使用示例
在React中,父組件可以通過props屬性向子組件傳遞數(shù)據(jù),子組件可以通過props屬性接收父組件傳遞過來的數(shù)據(jù),本文就來介紹一下如何實現(xiàn),感興趣的可以了解一下2023-10-10React類組件中super()和super(props)的區(qū)別詳解
這篇文章給大家詳細介紹了React類組件中super()和super(props)有什么區(qū)別,文中通過代碼示例給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-01-01React?正確使用useCallback?useMemo的方式
這篇文章主要介紹了React?正確使用useCallback?useMemo的方式,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-08-08