react hooks使用Echarts图表中遇到的情况及相关配置问题

 更新时间:2024年03月14日 08:56:24   作者:小刘加油!  
这篇文章主要介绍了react hooks使用Echarts图表中遇到的情况及相关配置问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

前言

项目开发中,需要做一个报表功能,看了下UI图,初步定下使用 echarts,不过之前使用 echarts 都是在 Vue2Vue3 框架下开发,第一次使用 react-hooks 开发 echarts,将流程及一些 相关配置 写个随笔记录下。

1、 下载 echarts 包

npm install echarts --save

2、引入eaharts

import * as echarts from 'echarts' // 引入 echarts 核心模块

注意:

  • 上面的引入写法是 echarts V5版本的写法,因为下载默认下载 V5版本
  • 如果需要按需引入,请参考echarts 官网

效果图如下所示:

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: '各厂手续办理数量总览',
                left: 10,
                top: 10,
            },
            dataZoom: [
                {
                    type: 'slider',  // slider 代表有滑块,inside 代表内置,左右滑动
                    id: 'dataZoomX',
                    start: 0, // 数据窗口范围的起始百分比。范围是:0 ~ 100。表示 0% ~ 100%。
                    show: true,  // 是否显示下方滚动条,默认为true
                    realtime: true,   // 是否实时更新
                    minValueSpan: 5,  // 显示数据的最小条数
                    maxValueSpan: 10,  //显示数据的最大条数
                    

                    fillerColor: "#CED4DD", //滑动块的颜色

                    xAxisIndex: [0],  // 表示这个 dataZoom 组件控制 第一个 xAxis
                    handleSize: 0, //滑动条的 左右2个滑动条的大小
                    height: 10, //组件高度
                    bottom: 0, // 控制滚动条距离底部的位置;
                    borderColor: "#FAFAFA",  // 边框颜色
                    
                    backgroundColor: "#FAFAFA", //两边未选中的滑动条区域的颜色
                    showDataShadow: false, //是否显示数据阴影 默认auto
                    showDetail: false, //即拖拽时候是否显示详细数值信息 默认true
                    filterMode: "filter",
                    brushSelect: false  // 滚动条上面的阴影
                }
            ],
            legend: {
                top: 10,
                right: 20
            },
            grid: {
                left: '3%',
                right: '4%',
                bottom: '3%',
                containLabel: true
            },
            xAxis: [
                {
                    type: 'category',
                    data: [], // 数组-数据
                    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: [], 数组-数据
                    itemStyle: {
                        color: '#0194FE'
                    }
                },
                {
                    name: '办理中',
                    type: 'bar',
                    stack: 'overlap',
                    emphasis: {
                        focus: 'series'
                    },
                    label: {
                        show: true,
                        position: 'inside'
                    },
                    data: [], 数组-数据
                    itemStyle: {
                        color: '#5CDBD3'
                    }
                },
                {
                    name: '未办理',
                    type: 'bar',
                    stack: 'overlap',  // stack: 'Ad', 好像也有同样效果
                    emphasis: {
                        focus: 'series'
                    },
                    label: {
                        show: true,
                        position: 'inside'
                    },
                    data: [], 数组-数据
                    itemStyle: {
                        color: '#FFC53D'
                    }
                },
            ]
        };

        myChart.resize()
        option && myChart.setOption(option);

        // 这个点击事件只限制于 点击柱形中有数据的部分,没有数据的部分,点击无效
        myChart.on('click', function(params: any) {
            handleGetBottomList(params.name, params.seriesName)
        })
	}
	
	useEffect( () => {
		initChart()
	})

	return (
		<div id='chart'></div>
	)
}

相关参数配置

1. 形成堆叠柱状图

series 配置中,将每一个柱的对象,其中的 stack 参数,设置成一样的 ‘overlap’ / ‘Ad’

2. 设置右上方的表头的位置

3. 设置echarts 柱状图 横向滚动

4. X轴坐标 label 文字过长,无法显示

  • interval:间隔 每个坐标之间的间隔,正常显示设置 0 就可以了。
  • rotate:偏移,也可以说是倾斜。值是number类型,视情况而定。

如果使用了偏移,可能会出现新的问题,就是左右边距不够文字会被遮挡一部分,这时候可以进行如下配置。

grid: {
    left:"20%",   //grid 组件离容器左侧的距离
    right:"30px", //grid 组件离容器右侧的距离
    bottom:"20%"  //grid 组件离容器下边距的距离
}

5. 点击柱状图,调用方法

如果项目开发中有这样的需求:

点击某一个柱状图,调用接口获取柱状图的某些数据,可以进行这样操作:

 myChart.on('click', function(params: any) {
       // params 为柱状图的参数 
       // 如果是普通柱状图,使用 params.name (对应的x轴label) 参数
       // 如果是折叠柱状图,使用 params.name   params.seriesName (对应的属性)
       // 如果还需要什么参数,可以打印 params 查找
       console.log('params', params)
 })

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持程序员之家。

相关文章

  • React服务端渲染原理解析与实践

    React服务端渲染原理解析与实践

    这篇文章主要介绍了React服务端渲染原理解析与实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • ReactNative踩坑之配置调试端口的解决方法

    ReactNative踩坑之配置调试端口的解决方法

    本篇文章主要介绍了ReactNative踩坑之配置调试端口的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Ant Design组件库的使用教程

    Ant Design组件库的使用教程

    AntDesign ,简称antd是基于 Ant Design 设计体系的 React UI 组件库,主要用于研发企业级中后台产品,这篇文章主要介绍了Ant Design组件库的使用教程,需要的朋友可以参考下
    2023-12-12
  • 详解React 在服务端渲染的实现

    详解React 在服务端渲染的实现

    这篇文章主要介绍了详解React 在服务端渲染的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • react函数组件useState异步,数据不能及时获取到的问题

    react函数组件useState异步,数据不能及时获取到的问题

    这篇文章主要介绍了react函数组件useState异步,数据不能及时获取到的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • react-intl实现React国际化多语言的方法

    react-intl实现React国际化多语言的方法

    这篇文章主要介绍了react-intl实现React国际化多语言的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • React Native自定义控件底部抽屉菜单的示例

    React Native自定义控件底部抽屉菜单的示例

    本篇文章主要介绍了React Native自定义控件底部抽屉菜单的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • react 应用多入口配置及实践总结

    react 应用多入口配置及实践总结

    这篇文章主要介绍了react 应用多入口配置及实践总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • Docker部署SpringBoot项目到云服务器的实现步骤

    Docker部署SpringBoot项目到云服务器的实现步骤

    Docker作为一种轻量级的容器化技术,为开发者提供了快速、便捷的部署方案,本文主要介绍了Docker部署SpringBoot项目到云服务器,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • react路由跳转传参刷新页面后参数丢失的解决

    react路由跳转传参刷新页面后参数丢失的解决

    这篇文章主要介绍了react路由跳转传参刷新页面后参数丢失的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06

最新评论

?


http://www.vxiaotou.com