将事件添加到克隆的组件
Add events to cloned component
我正在使用以下方法克隆组件并修改其属性。
const clone = React.cloneElement(<BallComponent>, {
key: new Date().getTime()
});
如何向这个克隆的组件添加点击事件并在点击时调用其 class 中的函数?
我尝试了以下方法但没有成功:
const clone = React.cloneElement(<BallComponent>, {
key: new Date().getTime()}
onClick: alert('test');
});
你之前关闭了道具对象的大括号。此外,传递 onClick 一个函数而不是在那里调用 alert,它将在组件安装时立即执行。
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);
在该示例中,您正在执行 alert('test')
并将其 return 值分配给 onChange
,在本例中为 undefined
.
你需要的是传递一个函数:
const clone = React.cloneElement(<BallComponent>, {
key: new Date().getTime()}
onClick: () => { alert('test') };
});
使用下面的代码片段,它将起作用。
var Clone = React.cloneElement(<BallComponent/>, {
key: new Date().getTime(),
onClick: () => { alert('test') }
});
P.S.-Make sure BallComponent have onClick unless alert will not fire.
我正在使用以下方法克隆组件并修改其属性。
const clone = React.cloneElement(<BallComponent>, {
key: new Date().getTime()
});
如何向这个克隆的组件添加点击事件并在点击时调用其 class 中的函数? 我尝试了以下方法但没有成功:
const clone = React.cloneElement(<BallComponent>, {
key: new Date().getTime()}
onClick: alert('test');
});
你之前关闭了道具对象的大括号。此外,传递 onClick 一个函数而不是在那里调用 alert,它将在组件安装时立即执行。
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);
在该示例中,您正在执行 alert('test')
并将其 return 值分配给 onChange
,在本例中为 undefined
.
你需要的是传递一个函数:
const clone = React.cloneElement(<BallComponent>, {
key: new Date().getTime()}
onClick: () => { alert('test') };
});
使用下面的代码片段,它将起作用。
var Clone = React.cloneElement(<BallComponent/>, {
key: new Date().getTime(),
onClick: () => { alert('test') }
});
P.S.-Make sure BallComponent have onClick unless alert will not fire.