recharts是一个基于React和D3的图表库,用于在Web应用程序中创建交互式和可定制的图表。MultiBarChart是recharts库中的一个组件,用于显示多个条形图。
要在MultiBarChart的每个条形上添加关闭按钮,以便关闭条形,可以通过以下步骤实现:
以下是一个示例代码,演示如何在recharts的MultiBarChart中添加关闭按钮:
import React, { useState } from 'react';
import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend } from 'recharts';
const data = [
{ name: 'A', value: 10 },
{ name: 'B', value: 20 },
{ name: 'C', value: 30 },
];
const CustomBar = ({ x, y, width, height, fill, onClick }) => {
return (
<g>
<rect x={x} y={y} width={width} height={height} fill={fill} />
<text x={x + width / 2} y={y + height / 2} fill="#fff" textAnchor="middle" dominantBaseline="middle">
{`${height}`}
</text>
<circle cx={x + width - 10} cy={y + 10} r={8} fill="#f00" onClick={onClick} />
</g>
);
};
const MultiBarChart = () => {
const [barStatus, setBarStatus] = useState(Array(data.length).fill(true));
const handleBarClick = (index) => {
const newBarStatus = [...barStatus];
newBarStatus[index] = !newBarStatus[index];
setBarStatus(newBarStatus);
};
return (
<BarChart width={500} height={300} data={data}>
<CartesianGrid strokeDasharray="3 3" />
<XAxis dataKey="name" />
<YAxis />
<Tooltip />
<Legend />
<Bar dataKey="value" fill="#8884d8" shape={<CustomBar onClick={(e) => handleBarClick(e.index)} />} hide={barStatus} />
</BarChart>
);
};
export default MultiBarChart;
在上述代码中,我们定义了一个名为CustomBar
的自定义组件,用于渲染每个条形。在CustomBar
组件中,我们添加了一个圆形按钮,并为其绑定了点击事件onClick
。
在MultiBarChart
组件中,我们使用useState
钩子来定义了一个名为barStatus
的状态,用于保存每个条形的显示状态。在handleBarClick
函数中,我们通过修改barStatus
状态来实现点击关闭按钮时的显示与隐藏。
最后,在Bar
组件中,我们使用hide
属性来根据barStatus
状态来控制条形的显示与隐藏。
这样,就实现了在recharts的MultiBarChart中沿Y轴的每个条形上添加关闭按钮,并且可以通过点击按钮来关闭相应的条形。
领取专属 10元无门槛券
手把手带您无忧上云