我使用以下方法克隆组件并修改其支持。
const clone = React.cloneElement(<BallComponent>, {
key: new Date().getTime()
});如何向此克隆组件添加单击事件,并在单击其类时调用其类中的函数?我在没有运气的情况下尝试了以下几种方法:
const clone = React.cloneElement(<BallComponent>, {
key: new Date().getTime()}
onClick: alert('test');
});发布于 2019-03-05 18:06:41
你正在关闭道具对象卷曲支撑之前。另外,向onClick传递一个函数,而不是在那里调用警报,当组件挂载时,警报将正确执行。
const clone = React.cloneElement(<BallComponent>, {
key: new Date().getTime()
onClick: () => { alert('test') }
});对于React.cloneElement的使用,这是一个很小的例子。
import React from "react";
import ReactDOM from "react-dom";
class Demo extends React.Component {
render() {
return <p onClick={this.props.click}>This is Demo. Click me.</p>;
}
}
function App() {
const clone = React.cloneElement(<Demo />, {
click: () => {
alert("You clicked Demo :)");
}
});
return (
<div className="App">
{clone}
</div>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);发布于 2019-03-05 18:16:27
使用下面的代码片段,它将工作。
var Clone = React.cloneElement(<BallComponent/>, {
key: new Date().getTime(),
onClick: () => { alert('test') }
});P.S.-确保BallComponent有onClick,除非警报不会开火。
发布于 2019-03-05 18:07:35
在该示例中,您正在执行alert('test')并将其返回值分配给onChange,在本例中为undefined。
您需要的是传递一个函数:
const clone = React.cloneElement(<BallComponent>, {
key: new Date().getTime()}
onClick: () => { alert('test') };
});https://stackoverflow.com/questions/55008734
复制相似问题