react+echarts实现变化趋势缩略图

如上图,实现一个缩略图。

复制代码
import React, { useState, useEffect } from 'react';
const ParentCom = () => {
	const [data, setData] = useState({});
	useEffect(() => {
		// 这里可以做一些接口请求等操作
		setData({
            isSheng: false, value: 11.24, percentage: '2.3%', data: {
              xData: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
              yData: [820, 233, 121, 934, 12, 130, 320],
            },
          });
	},[]);

	return <div>
		<div>{/*页面的其他渲染内容*/}</div>
		<ThumbnailChartsCom 
          id={'yeasterday-search-time'}
          data={data} />
	</div>
};
export default ParentCom;
javascript 复制代码
import React, { memo, useEffect, useRef } from 'react';

import { LineChart } from 'echarts/charts';
import { GridComponent } from 'echarts/components';
import * as echarts from 'echarts/core';
import { UniversalTransition } from 'echarts/features';
import { CanvasRenderer } from 'echarts/renderers';

import styles from './index.module.less';

echarts.use([
  GridComponent,
  LineChart,
  CanvasRenderer,
  UniversalTransition,
]);
interface IThumbnail {
  xData: string[];
  yData: number[];
}
const ThumbnailChartsCom = ({ id, data }: { id: string, data: IThumbnail }) => {
  const chartRef = useRef<HTMLDivElement>(null);
  useEffect(() => {
    const chartDom = chartRef.current;
    if (!chartDom) return;
    const myChart = echarts.init(chartDom);
    const option = {
      grid: {
        top: '0',
        left: '0',
        right: '0',
        bottom: '0',
        containLabel: true,
      },
      // 设置x轴的类型为类目轴,不显示边界间隙
      xAxis: {
        type: 'category',
        boundaryGap: false,
        show: false,
        // 设置x轴的数据
        data: data.xData || [],
      },
      // 设置y轴的类型为数值轴
      yAxis: {
        type: 'value',
        axisTick: { show: false }, // 隐藏 Y 轴的刻度线
        axisLabel: { show: false },  // 隐藏 Y 轴的标签
        splitLine: {
          show: false,
        }, // 隐藏 Y 轴的分割线
      },
      // 设置图表的系列数据
      series: [
        {
          // 设置系列数据
          data: data.yData || [],
          type: 'line', // 设置系列数据的类型为折线图
          symbol: 'none', // 不显示折线图上的点
          smooth: true, // 平滑曲线
          lineStyle: {
            color: '#375EFF',
          },
          // 设置系列数据的区域样式
          areaStyle: {
            opacity: 0.3,
          },
        },
      ],
    };
    option && myChart.setOption(option);
    const handleResize = () => {
      myChart.resize();
    };
    window.addEventListener('resize', handleResize);

    return () => {
      window.removeEventListener('resize', handleResize);
      myChart.dispose(); // 销毁ECharts实例
    };
  }, [data, id]);
  // 返回一个div元素,用于显示图表
  return <div ref={chartRef} id={id} className={styles.chartsWrap} />;
};

export default memo(ThumbnailChartsCom);

思路

将折线图的横纵轴信息、标题、图例、信息卡、刻度线等全部隐藏起来。

相关推荐
怕浪猫1 小时前
给AI配一台电脑,开源版Muse来了,OpenMuse赶紧去二次开发吧
javascript·面试·github
Jack N1 小时前
【Strapi 系列之二】Collection / Single / Component 怎么选?Strapi 字段大全一篇讲透
前端·javascript·strapi
Java后端的Ai之路1 小时前
09-React组件生命周期
前端·react.js·前端框架
郑州光合科技余经理2 小时前
本地生活服务系统:预约状态和进度通知接口怎么拆
java·开发语言·前端·javascript·后端·php·生活
半个落月11 小时前
LangSmith 全链路观测(下):用 Dataset 与 LLM Judge 量化评估 RA
javascript·langchain
半个落月11 小时前
LangSmith 全链路观测(上):用 LangGraph 与 Milvus 构建可追踪的 RAG 客服
javascript·langchain
Java后端的Ai之路12 小时前
06-React-Props
前端·react.js·前端框架
半个落月12 小时前
LangChain.js Agent 中间件实战:生命周期、动态工具与文件权限
javascript·langchain
志尊宝13 小时前
Vue3 零基础每日笔记(082):文件上传实战——el-upload 校验、自定义上传、头像预览
前端·javascript·vue.js·笔记·#javascript·#vue.js
paopaokaka_luck14 小时前
滑雪场管理系统(AI智能助手流式对话,ECharts 运营数据分析、教练、雪具与场地一体化预约,钱包支付退款、订单核销与服务评价)
java·人工智能·spring boot·网络协议·数据分析·echarts