提问人:NealVDV 提问时间:2/12/2017 更新时间:2/12/2017 访问量:7536
何时在 react onClick 中调用函数与函数()?[复制]
When to call function vs function() in react onClick? [duplicate]
问:
我对何时在 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>
答:
-3赞
Allen
2/12/2017
#1
最好使用 parens 调用该函数,因为当您创建一个单独的 js 文件并将它们与 script 标签链接在一起时,您可以确定它正在调用该特定函数。
评论
0赞
NealVDV
2/12/2017
谢谢!您是否有任何文件/帖子引用了此内容,以便我了解更多信息?
0赞
Allen
2/12/2017
我有两本来自 Interactive Python 的外部“书”(这是我的教授制作的!),您可以自己测试并阅读它。这个是给初学者的,但它仍然有很多有用的js东西:interactivepython.org/runestone/static/webfundamentals/......另一个是更复杂的js,它涵盖了ECMAscript 6:interactivepython.org/runestone/static/JS4Python/index.html
30赞
Felix Kling
2/12/2017
#2
foo()
正在调用 引用的函数。 本身只是对函数的引用,它不调用函数。foo
foo
因此,如果要此时此地调用该函数,则需要使用括号。
如果要将函数传递给其他代码,以便它可以调用该函数,则必须省略括号。事件处理程序就是这种情况。 应在 click 事件发生时(即将来的某个时间)调用,而不是在呈现组件时调用。this.props.OnNavigation
评论
0赞
Prakash Sharma
2/12/2017
this.props.OnNavigation 不是对函数的引用吗?通过编写 onClick={this.props.OnNavigate()},我们不是在渲染期间调用它而不是 onClick 吗?
0赞
Felix Kling
2/12/2017
没错。
0赞
Prakash Sharma
2/12/2017
但是,根据问题,onClick={this.props.OnNavigate()}>是如何工作的?
3赞
Felix Kling
2/12/2017
我不认为这是一个正确的评估。它可能“看起来”有效。当然,也有可能返回一个函数,该函数是实际的事件处理程序,但这种可能性可能较小。尽管如此,无论情况如何,我的说法都是正确的。onNavigation
0赞
Prakash Sharma
2/12/2017
是的,我认为你的陈述是对的,是有道理的。但这件事让我感到困惑。
评论