You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在recharts柱状图中点击Bar时获取对应绑定的数据对象

Recharts柱状图点击柱条获取对应AppName实现方案

直接利用<Bar>组件内置的点击事件回调即可实现,不需要额外引入第三方依赖,具体实现如下:

完整可运行代码示例

import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts';

// 业务侧传入的图表数据
const chartData = [
  {
    "AppName": "abc",
    "count": 1
  },
  {
    "AppName": "abc1",
    "count": 2
  },
  {
    "AppName": "abc2",
    "count": 3
  }
];

const AppBarChart = () => {
  // 柱条点击处理逻辑
  const handleBarClick = (barData) => {
    // barData.payload 对应当前点击柱条关联的原始数据对象
    const currentAppName = barData.payload.AppName;
    // 后续自定义业务逻辑可写在此处,比如状态存储、弹窗提示、页面跳转等
    console.log('当前点击柱条对应的AppName:', currentAppName);
  };

  return (
    <div style={{ width: '100%', height: 400 }}>
      <ResponsiveContainer width="100%" height="100%">
        <BarChart data={chartData}>
          <CartesianGrid strokeDasharray="3 3" />
          <XAxis dataKey="AppName" />
          <YAxis />
          <Tooltip />
          {/* 给Bar组件绑定点击事件即可 */}
          <Bar 
            dataKey="count" 
            fill="#8884d8" 
            onClick={handleBarClick}
          />
        </BarChart>
      </ResponsiveContainer>
    </div>
  );
};

export default AppBarChart;

实现关键点

  • 点击事件直接绑定在<Bar>组件上即可,不需要手动遍历柱条单独绑定,Recharts内部已经做了事件代理
  • 点击回调的入参对象中,payload字段就是传入图表数组里对应的原始数据项,除了AppName之外,也可以从该字段取到count等其他自定义存储的属性
  • 如果需要实现点击选中高亮效果,可以给<Bar>增加activeBar属性自定义选中柱的填充色、边框样式,配合React state存储当前选中的AppName即可完成交互

内容的提问来源于stack exchange,提问作者Saksham Arya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 15:45:34