javascript - 在 reactjs 事件处理中传递 {SomeFunction} 和 {SomeFunction()} 的区别
问题描述
import React from "react";
const FunctionClick = () => {
const clickHandler = () => {
console.log("Button clicked.");
};
return (
<div>
<button onClick={clickHandler}>Click</button>
</div>
);
};
export default FunctionClick;
{ REACT NOOBIE ALERT } 在上面的代码中,我可以看到输出的不同
<button onClick={clickHandler}>Click</button>
和
<button onClick={clickHandler()}>Click</button>
但是有人可以解释为什么我们要传递函数而不是调用它吗?
即使我们想在单击按钮时调用它,当页面加载时如何调用函数(在第二个代码中)。
解决方案
在这里,您传递的是函数(对象)引用,除非您明确调用它,否则它不会被调用,因为它在onClick
点击事件发生时调用该函数。
<button onClick={clickHandler}>Click</button>
在这里,您正在传递 的返回值clickHandler
,现在这取决于您从哪个值/对象返回clickHandler
,因为反应中的 onClick 期望调用函数引用,因此您必须从中返回一个函数,clickHandler
否则它将引发错误。
<button onClick={clickHandler()}>Click</button>
推荐阅读
- python - python不会通过while循环?
- foreach - 错误重载方法值 foreach 与火花中的替代品
- excel - 调试 Excel 加载项时无法查看“console.log()”输出
- java - org.openqa.selenium.WebDriverException:[异常...“组件未初始化”错误使用 GeckoDriver 和 Tor 浏览器与 Selenium Java
- windows - 如何从通过自定义 url 协议传递到应用程序(VNC 查看器)的参数末尾删除尾部正斜杠(“/”)?
- php - OAuth:生成/重用令牌的正确方法
- javascript - Jquery 函数在完成获取请求时未隐藏元素
- reactjs - 是否可以通过 React 中的状态值来增加变量的值?
- ios - 请求musickitusertoken时无法识别问题,curl请求也不起作用
- javascript - 如何在Javascript中从用户那里获取多个输入?如何为所有人声明变量?