自定义React组件怎么正确传递和触发事件?
我写了个按钮组件,想在父组件里监听点击事件,但点按钮没反应,是我哪里写错了吗?
我试过在子组件里用props.onClick(),也试过把onClick直接传给button元素,但都不行。
function MyButton({ onClick }) {
return <button onClick={onClick}>点我</button>;
}
// 父组件
function App() {
const handleClick = () => console.log('clicked!');
return <MyButton onClick={handleClick} />;
}
如果点按钮没反应,可能是这几个地方有问题:
1. 检查一下组件名大小写,React组件必须大写开头,比如
MyButton而不是myButton2. 确认 props 确实传进来了,可以在子组件里加个 console.log 调试一下
3. 看看是不是有其他地方把事件覆盖了
如果想更稳健一点,可以加个防御性编程:
然后父组件这样用:
你实际运行的代码和这个示例有出入吗?可以把你的完整代码贴出来看看,问题可能出在别的地方。