将 onclick 函数共享到按钮组件 React JS

Posted

技术标签:

【中文标题】将 onclick 函数共享到按钮组件 React JS【英文标题】:Share onclick function to button components React JS 【发布时间】:2021-01-12 06:18:47 【问题描述】:

我需要制作一个通用按钮,在其中我将某些属性作为参数传递。其中一个属性是点击事件时必须执行的函数。

function Boton(props:  name: React.ReactNode , funcion: React.ReactNode ) 
  return (<div className="center-div"><IonButton shape="round" onClick=props.funcion> props.name</IonButton></div>);

但我得到的是:

JSX 属性) onClick?: ((event: React.MouseEvent) => void) | 未定义类型“ReactNode”不可分配给类型“((事件: MouseEvent) => void) |不明确的'。 类型‘null’不可分配给类型‘((事件: MouseEvent) => void) | undefined'.ts(2322) index.d.ts(1455, 9):预期类型来自 属性“onClick”,在此处以“IntrinsicAttributes”类型声明 & Pick

但我不想要鼠标事件,因为它将是一个移动应用程序。

【问题讨论】:

【参考方案1】:

您似乎在为您的函数参数提供React.ReactNode 类型。 你应该给它一个函数类型。

可能是这样的:() =&gt; void

另外,我猜你的名字参数应该是String

【讨论】:

【参考方案2】:

通用按钮的“功能”道具不应该是 React.ReactNode。

我在这里使用箭头函数,

const Button = (props:  name: React.ReactNode, onClick: Function) => 
   (<div className="center-div">
     <IonButton shape="round" onClick=props.onClick> 
      props.name
    </IonButton>
 </div>);

无论您在哪里定义通用按钮,都要定义名称和 onClick 道具。

希望以上代码能解决您的问题。

【讨论】:

谢谢。这就是我得到的:(JSX 属性) onClick?: ((event: React.MouseEvent) => void) |未定义类型'Function'不可分配给类型'(event: MouseEvent) => void'.ts(2322)

以上是关于将 onclick 函数共享到按钮组件 React JS的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React 中使用 onClick() 函数渲染不同的组件?

React - onClick 用于动态生成的组件

React:从按钮 onclick 传递映射数据以显示在另一个组件上

这是在 React js 中的按钮 onClick 中调用功能组件的最简单方法

React 父组件中的 onClick 事件不起作用

React父组件中的onClick事件不起作用