在使用 ReactJS 在 javascript 中进行事件处理时,我对此感到困惑。
有什么区别
<button onClick={f()} />
和
<button onClick={()=>f()} />
我所知道的是第二个是返回 f() 的包装函数,但我看不出那里到底发生了什么变化。我确实在其他人的代码中看到了它们。
最佳答案
在您的示例中,第一种情况仅调用 f
在加载时,这可能不是你想要的,除非 f
返回另一个函数(当点击事件发生时会被调用)。第二个只是一个匿名函数包装 f
这样f
直到 click
才被调用事件发生。
为什么第二种表示法有用?
如果f
不带参数然后使用
<button onClick={ f } /> // note: no parentheses
和
<button onClick={ () => f() } />
几乎是等价的。两者之间的细微差别在于 event
传递给 f
在第一种情况下,而不是在第二种情况下。技术上<button onClick={ event => f(event) }/>
将等同于第一种情况,但这有点离题。
但是,如果 f
确实需要一些参数(除了 event
本身),那么使用它很有用:
<button onClick={ () => f(someValue) } />
所以someValue
可以传递给f
当点击事件发生时。
关于javascript - f() 和 ()=>f() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53200435/