我尝试创建一组由React生成的按钮,从数组中拉取ID,标签和链接。ID和标签,通过className和.label,都可以工作。我不想使用href:对于链接,我想调用一个函数(使用onClick),它使用传递到.createElement中的参数组装链接().不幸的是,当react渲染任何具有带括号功能的元素时它不断地调用函数。有没有什么方法可以将参数传递到.createElement中的onClick调用的函数中?我不想使用JSX -我致力于此。createElement的值。
.createElement()的伪代码:
return (React.createElement("div", { key: item.id, className: "dummyClassObject"},
React.createElement("span", { className: "dummyClassLabel" }, item.label)));
示例函数:
function linking(link) {
console.log("Redirecting to" + " " + link);
window.open(link);
}
当我将onClick: linking
附加到div
元素时,它工作正常(除了缺少一个参数)。当我尝试以传统方式(linking(item.link)
)传递参数时,它会重复调用函数。我确实google了这一点-这是预期的行为。还有什么方法可以在不意外调用函数的情况下传递参数?
如果这是一个愚蠢的问题-对不起:)
3条答案
按热度按时间fslejnso1#
从你对问题的描述来看,我认为你想做的是
3htmauhk2#
onClick: linking
是完全有效的,它只是传递函数引用。这样使用时不会丢失任何参数。添加括号将调用函数 now,但实际上您希望它在响应用户单击按钮时被调用;它需要一个函数引用,因为它需要能够在事件发生时调用函数本身。使用onClick: linking(item.link)
将调用并执行函数,并尝试将其返回值(未定义)分配给“onClick”属性(这不会做任何事情)。另一方面,虽然
onClick: linking
是有效的,但您的函数期望的值与它将要接收的值不同:一个元素的click事件处理器是用一个MouseEvent
对象调用的。您可能需要传递另一个函数,该函数使用预期值调用处理程序,可能是沿着
这将创建一个新函数,该函数不接受任何参数(或者如果给定了一个参数,如事件对象,它将被忽略),而是在调用时使用给定的参数调用函数。
ar5n3qh53#
尝试以下代码:
或者,对于功能组件: