Bar Chart With Customized Event
Click each rectangle
import { useState } from 'react';
import { Bar, BarChart, BarRectangleItem, BarShapeProps, Rectangle } from 'recharts';
import { RechartsDevtools } from '@recharts/devtools';
// #region Sample data
const data = [
{
name: 'Page A',
uv: 4000,
pv: 2400,
amt: 2400,
},
{
name: 'Page B',
uv: 3000,
pv: 1398,
amt: 2210,
},
{
name: 'Page C',
uv: 2000,
pv: 9800,
amt: 2290,
},
{
name: 'Page D',
uv: 2780,
pv: 3908,
amt: 2000,
},
{
name: 'Page E',
uv: 1890,
pv: 4800,
amt: 2181,
},
{
name: 'Page F',
uv: 2390,
pv: 3800,
amt: 2500,
},
{
name: 'Page G',
uv: 3490,
pv: 4300,
amt: 2100,
},
];
// #endregion
const MyCustomShape = (props: BarShapeProps) => {
const [isActive, setIsActive] = useState(false);
const handleMouseClick = () => {
setIsActive(curr => !curr);
};
const fillOpacity = isActive ? 1 : 0.5;
return <Rectangle {...props} onClick={handleMouseClick} fillOpacity={fillOpacity} />;
};
const BarChartWithCustomizedEvent = () => {
return (
<>
<p>Click each rectangle </p>
<BarChart
style={{ width: '100%', maxWidth: '700px', maxHeight: '30vh', aspectRatio: 1.618 }}
responsive
data={data}
>
<Bar
dataKey="uv"
onClick={(bri: BarRectangleItem, index, event) => {
console.log('clicked on', bri, index, event);
}}
shape={MyCustomShape}
/>
<RechartsDevtools />
</BarChart>
</>
);
};
export default BarChartWithCustomizedEvent;