React父组件如何拦截所有子组件的点击事件?

再不用addEventListener的情况下,React父组件如何拦截所有子组件的点击事件。

只使用类似

  • onClkick
  • onClickCapture

这样的事件能实现吗?

阅读 4.7k
3 个回答

自己查查React.children.map clone的元素onClick={() => {props.click}} 试试?

直接在顶层div绑定onClick,因为react的事件是合成事件,点击事件会冒泡到顶层dom

父组件可用通过React.Children获取所以子组件,通过React.cloneElement覆盖onClick事件达到拦截效果

{React.Children.map(children, (child) => React.cloneElement(child, { onClick: () => {} }))}

不满足还能对child深层递归

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题