Я использую компонент HO C, чтобы связать действие со многими различными типами элементов, включая SVG-ячейки, которые, когда onClick привязан нормально, работают, но когда я использую свой HO C, это возвращает непредвиденные результаты.
Пример минимальной воспроизводимости: https://codesandbox.io/s/ecstatic-keldysh-3viw0
Компонент HO C:
export const withReport = Component => ({ children, ...props }) => {
console.log(Component); //this only prints for ListItem elements for some reason
const { dispatch } = useContext(DashboardContext);
const handleClick = () => {
console.log('clicked!'); //even this wont work on some.
const { report } = props;
if (typeof report === "undefined") return false;
dispatch({ type: SET_ACTIVE_REPORT, activeReport: report });
dispatch({ type: TOGGLE_REPORT });
};
return (
<Component onClick={handleClick} {...props}>
{children}
</Component>
);
};
Использование при работе:
const ListItemWIthReport = withReport(ListItem); //list item from react-mui
{items.map((item, key) => (
<ListItemWithReport report={item.report} key={key} button>
{/* listitem children*/}
</ListItemWithReport>
))}
Использование не работает:
const BarWithReport = withReport(Bar); //Bar from recharts
{bars.map((bar, index) => (
<BarWithReport
report={bar.report}
key={index}
dataKey={bar.name}
fill={bar.fill}
/>
))}
ListItem работает на 100%, как и ожидалось, однако столбцы не будут отображаться внутри BarChart. Точно так же с PieChart ячейки будут фактически отображаться, с правильными размерами в соответствии с их значениями, однако, реквизиты, подобные «заливке», по-видимому, не проходят вниз.
Я неправильно использую HO C? Я не вижу опции, кроме HO C для внутренних диаграмм, так как многие типы элементов будут считаться недействительными HTML?