当前位置:首页 > React

react实现echarts甘特图

2026-01-26 23:14:57React

实现步骤

安装必要的依赖包,确保项目中有 echartsreact 的基础环境。

npm install echarts echarts-for-react

引入模块

在 React 组件中引入 ReactEChartsecharts 核心模块。

import React from 'react';
import ReactECharts from 'echarts-for-react';
import * as echarts from 'echarts';

配置甘特图数据

甘特图的核心是数据格式,通常需要包含任务名称、开始时间、结束时间等信息。以下是一个示例数据格式:

const ganttData = [
  {
    name: '任务A',
    start: '2023-01-01',
    end: '2023-01-05'
  },
  {
    name: '任务B',
    start: '2023-01-03',
    end: '2023-01-08'
  },
  {
    name: '任务C',
    start: '2023-01-06',
    end: '2023-01-10'
  }
];

转换日期为时间戳

ECharts 的甘特图通常需要将日期转换为时间戳以便正确渲染。

const processData = (data) => {
  return data.map(item => ({
    ...item,
    startValue: new Date(item.start).getTime(),
    endValue: new Date(item.end).getTime()
  }));
};

配置 ECharts 选项

定义 ECharts 的配置项,设置坐标轴、系列类型及数据绑定。

const getOption = () => {
  const processedData = processData(ganttData);
  return {
    tooltip: {
      trigger: 'axis',
      formatter: params => {
        const data = params[0].data;
        return `${data.name}<br/>开始: ${data.start}<br/>结束: ${data.end}`;
      }
    },
    xAxis: {
      type: 'time'
    },
    yAxis: {
      type: 'category',
      data: processedData.map(item => item.name)
    },
    series: [
      {
        type: 'bar',
        data: processedData.map(item => [
          item.startValue,
          item.endValue,
          item.name
        ]),
        encode: {
          x: [0, 1],
          y: 2
        }
      }
    ]
  };
};

渲染组件

在 React 组件中使用 ReactECharts 渲染配置好的甘特图。

const GanttChart = () => {
  return (
    <ReactECharts
      option={getOption()}
      style={{ height: '400px', width: '100%' }}
    />
  );
};

export default GanttChart;

自定义样式调整

如果需要调整甘特图的颜色、间距或其他样式,可以通过修改 series 配置实现。

series: [
  {
    type: 'bar',
    itemStyle: {
      color: '#3398DB'
    },
    barGap: '10%',
    barCategoryGap: '20%',
    data: processedData.map(item => [
      item.startValue,
      item.endValue,
      item.name
    ]),
    encode: {
      x: [0, 1],
      y: 2
    }
  }
]

动态数据更新

如果数据需要动态更新,可以通过 React 的状态管理实现。

const [data, setData] = React.useState(ganttData);

const updateData = (newData) => {
  setData(newData);
};

return (
  <ReactECharts
    option={getOption(data)}
    style={{ height: '400px', width: '100%' }}
  />
);

注意事项

  • 确保日期格式正确,避免因格式问题导致渲染异常。
  • 调整 yAxisinverse 属性可以控制任务列表的排序方向。
  • 复杂场景下可能需要结合 dataset 和多个 series 实现更丰富的交互效果。

react实现echarts甘特图

标签: 甘特图react
分享给朋友:

相关文章

react中monent如何获取日期

react中monent如何获取日期

使用 Moment.js 获取日期 在 React 项目中,可以通过 Moment.js 库轻松处理日期和时间。以下是几种常见的日期获取方法。 安装 Moment.js 确保项目中已安装 Mome…

react 如何引入css

react 如何引入css

在 React 中引入 CSS 的方法 React 提供了多种引入 CSS 的方式,可以根据项目需求选择合适的方法。以下是常见的几种方式: 内联样式 内联样式直接在组件中通过 style 属性定义,…

如何react页面

如何react页面

创建 React 页面 使用 create-react-app 快速初始化项目: npx create-react-app my-app cd my-app npm start 编写组件代码 在 s…

vue实现甘特图

vue实现甘特图

使用 Vue 实现甘特图 基于开源库(如 vue-ganttastic) 安装依赖库: npm install vue-ganttastic 示例代码: <template>…

react 如何执行

react 如何执行

安装 Node.js 和 npm React 开发需要 Node.js 环境,因为它提供了 npm(或 yarn)包管理工具。从 Node.js 官网 下载并安装最新 LTS 版本。安装完成后,在终端…

react如何销毁

react如何销毁

React 组件销毁的机制 在 React 中,组件的销毁通常由 React 的生命周期管理。当组件从 DOM 中移除时,React 会自动触发销毁相关的生命周期方法。以下是关键点: 组件的销毁通常…