Зачем вам использовать cloneElement
, когда вы получили JSX (можно сделать вывод из синтаксиса MyComponents
).
Вместо этого выполните:
<MyComponent
onClick={() => console.log("click")}
style={{ background: "red" }}
/>
И исправьте свой компонент:
const MyComponent = ({ onClick }) => {
return <div onClick={onClick}>foooo</div>;
}
JSX является синтаксисом сахара для createElement
/ cloneElement
.
React.cloneElement(
element,
[props],
[...children]
)
React.cloneElement () почти эквивалентен:
<element.type {...element.props} {...props}>{children}</element.type>
Поэтому правильный синтаксис:
const onClick = () => console.log('click');
const style = {background: 'red'};
// Exatcly the same effect as <MyComponent .../> above
React.cloneElement(<MyComponent/>, {onClick, style}, null);
![Edit intelligent-architecture-9modf](https://codesandbox.io/static/img/play-codesandbox.svg)