我是react.js的新手。我对react.js中的onChange事件有一点困惑。为什么我们在通过onChange事件处理事件时不使用括号?
<input
type="text"
onChange={this.handleChange()}
/>通常,当我们通过JavaScript处理事件时,我们会这样写
<input type="text" onclick="handleChange()"/>发布于 2021-10-09 20:20:12
如果你的意思是为什么我们需要做onChange={this.handleChange}而不是onChange={this.handleChange()} -第一个makes给出了handleChange对onChange的引用。第二个函数(在被解释时)立即运行handleChange函数,并将该函数的返回值保存为onChange的引用。
你可以这样想
onClick={alert(123)} // this runs alert immediately
onClick={() => alert(1)} // makes a new function will run when clicked
onClick={alert} // this runs alert when clicked如果您需要在事件处理程序中使用的event对象,请考虑从何处获得该对象;您需要将其作为函数参数获取,并为此需要一个新的函数或引用:
onClick={console.log} // logs the event object
onClick={(event) => console.log(event)} // also logs the event
onClick={console.log(event)} // runs immediately, event doesn't exist then当您有一个像onclick="handleChange()"这样的内联事件处理程序时,您的浏览器实际上会在您按下时计算字符串"handleChange()"。就像eval()函数一样。尝试在开发工具中执行警告,注意“eval("alert()") ()”是一个字符串
PS。欢迎来到SO!请下次检查您的问题的格式:)
https://stackoverflow.com/questions/69504471
复制相似问题