广州第二精神病院冯主任 发表于 2024-7-5 21:52:15

React echarts 组件的封装使用案例

React echarts 组件的封装
import React, { useEffect, useRef } from 'react';
import { useSize, useDebounceEffect } from 'ahooks';
import LoopShowTooltip from './echartsTooltipLoop';
import * as echarts from 'echarts';
const CommonChart = props => {
    const { chartId, options, autoTooltip } = props;
    const chartRef = useRef();
    const size = useSize(chartRef);
    const loopRef = useRef();
    useEffect(() => {
      let chartDom;
      let myChart;
      if (loopRef.current) {
            loopRef.current?.clearLoop();
            loopRef.current = null;
      }
      setTimeout(() => {
            if (loopRef.current) {
                loopRef.current?.clearLoop();
                loopRef.current = null;
            }
            if (chartRef) {
                chartDom = chartRef.current;
                myChart = echarts.init(chartDom);
                options && myChart.setOption(options);
                if (autoTooltip) {
                  loopRef.current = new LoopShowTooltip(myChart, options, {});
                }
            }
      });
      window.onresize = () => {
            myChart.resize();
      };
      return () => {
            window.onresize = null;
            loopRef?.current?.clearLoop();
            loopRef.current = null;
      };
    }, );
    useDebounceEffect(() => {
      let myChart;
      let chartDom;
      if (chartRef) {
            chartDom = chartRef.current;
            myChart = echarts.init(chartDom);
            options && myChart.setOption(options);
            myChart.resize();
      }
      window.onresize = () => {
            myChart.resize();
      };
    }, , {
      wait: 100,
    });
    return <div ref={chartRef} style={{ width: '100%', height: '100%' }}></div>;
};
export default CommonChart;使用案例

import React from "react";
import CommonChart from './pages/CommonChart/UI'
const Demo = () => {
let echarData = ;
let yAxisData = ['星期一','星期二','星期三','星期四','星期五','星期六','星期日'];
   const chartOptions = {
            grid: {
                top: '8%',
                bottom: '15%',
                left: '30%',
                right: '16%',
                // containLabel: true,
            },
            tooltip: {
                trigger: 'item',
                show: true,
                backgroundColor: '#3A3F4D',
                borderWidth: 0,
                textStyle: {
                  // 提示框浮层的文本样式。
                  color: '#B1B6C2',
                  fontStyle: 'normal',
                  fontWeight: 'normal',
                  fontFamily: 'sans-serif',
                  fontSize: 14,
                },
                formatter: record => {
                  let result = `${record.name}:${record.value} 次`;
                  return result;
                },
            },
            xAxis: {
                type: 'value',
                boundaryGap: ,
                splitLine: {
                  show: false,
                },
            },
            yAxis: {
                type: 'category',
                data: yAxisData,
                scale: true,
                axisTick: {
                  // x轴刻度线
                  show: false,
                  alignWithLabel: true,
                },
                axisLabel: {
                  interval: 0,
                  width: 80,
                  overflow: 'truncate',
                  ellipsis: '...',
                  align: 'left',
                  margin: 80,
                },
                axisLine: {
                  // 坐标轴
                  show: false,
                },
            },
            series: [
                {
                  name: '2011',
                  type: 'bar',
                  showBackground: true,
                  backgroundStyle: {
                        color: '#1A1E28',
                  },
                  barWidth: 12, // 柱图宽度
                  itemStyle: {
                        normal: {
                            // 柱状图上显示数量
                            label: {
                              show: true, // 是否显示
                              position: , // 位置
                              formatter: '{@value}' + '次', // 内容
                              color: '#A5ADBA', // 文字颜色
                            },
                            color: '#2275F0', // 柱子颜色
                        },
                  },
                  data: echarData,
                },
            ],
      };
return (
    <div style={{height:300, width: 400}}>
         <CommonChart options={chartOptions} />
    </div>
);
};
export default Demo;到此这篇关于React echarts 组件的封装的文章就介绍到这了,更多相关React echarts 组件封装内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/javascript/32346390q.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: React echarts 组件的封装使用案例