You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用React createElement时,传入组件作为type无法传递事件处理函数

解决React createElement自定义组件onClick不生效的问题

问题核心:内置HTML标签会自动处理onClick这类原生事件,但自定义组件不会自动将父组件传递的props转发给内部DOM元素,必须手动处理。

解决步骤

修改自定义组件InnerComponent,让它接收props并将onClick传递给内部的button元素:

import { createElement } from 'react'

const InnerComponent = (props) => {
  // 将接收的props完整传递给内部button,包括onClick
  return createElement(
    'button',
    props,
    'Click me (works now)'
  )
}

const Component = ({ children }) => {
  const handleClick = () => { console.log('onClick!') };

  let props = {
    onClick: handleClick,
  };
 
  return createElement(
    InnerComponent,
    props,
    children,
  )
}

export default Component

如果只需要传递onClick而非全部props,也可以解构指定:

const InnerComponent = ({ onClick }) => {
  return createElement(
    'button',
    { onClick },
    'Click me (works now)'
  )
}

这样点击按钮时,handleClick函数就能正常触发了。

内容的提问来源于stack exchange,提问作者guizo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:33:19