【发布时间】:2022-04-21 17:08:55
【问题描述】:
这段代码有什么区别:
<button onClick={()=>props.submitHandler(searchInputValue)}>Submit</button>
和
<button onClick={props.submitHandler(searchInputValue)}>Submit</button>
区别在于第一个有括号,而第二个没有。如果没有括号,我的应用程序似乎会无限期地重新渲染。谁能给我解释一下?
【问题讨论】:
-
不同的是首先它不是执行函数,而是调用函数。其次,它只在那里执行功能。
-
在
onClick你不应该调用这个函数,而是设置一个函数引用。在第一种情况下,您在onClick中编写另一个函数,它返回一个函数引用,而第二种情况您直接调用该函数。这意味着您的submitHandler函数在单击按钮之前执行。它不等待点击事件。 -
一个
onClick事件处理函数是一个函数,所以prop期待一个函数,所以除非props.submitHandler(searchInputValue)返回一个函数,否则第二行代码无效。 -
第一个例子是调用函数,第二个例子是执行。根据您在提交处理程序中所做的事情,这可能会导致无限期重新渲染。
标签: javascript reactjs react-hooks