我对何时调用react组件中的函数有疑问。有时我的代码会在我没有将括号添加到函数调用时中断,但并非总是如此。我在这里缺少某种规则吗?
不起作用
// Callback of parent component
<Link onClick={this.props.OnNavigate}>
A link
</Link>
有效吗
// Callback of parent component
<Link onClick={this.props.OnNavigate()}>
A link
</Link>
// Callback for function of component
<li onClick={this.toggleDepartments}>other example</li>
答案 0 :(得分:14)
foo()
正在调用foo
引用的函数。 foo
本身只是对函数的引用,它不调用函数。
因此,如果您想在此处立即调用函数,则需要使用括号。
如果要将函数传递给其他代码,则必须省略括号,以便可以调用该函数。事件处理程序就是这种情况。当click事件发生时(将来某个时间),而不是在呈现组件时,应调用this.props.OnNavigation
。
答案 1 :(得分:-1)
使用parens调用该函数是一个好习惯,因为当您创建一个单独的js文件并将它们与脚本标记链接在一起时,您肯定知道它正在调用该特定函数。