Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript _Javascript_Html_Css - Fatal编程技术网

Javascript

Javascript ,javascript,html,css,Javascript,Html,Css,我应该用 <a href="url">Something/> 所以当我点击它时,它会将我重定向到我的URL 但是现在我想用onClick方法来使用我的路由器 在我的代码中,我尝试使用它: <a onClick={this.changeRoute()}>Something/> 但这会直接重定向我,而无需点击它。。。。 我希望结果是它在我点击它之后调用我的函数。 我不明白什么?用括号执行函数。要解决您的问题,请将其删除 <a onClick={this.

我应该用
<a href="url">Something/>
所以当我点击它时,它会将我重定向到我的URL

但是现在我想用onClick方法来使用我的路由器

在我的代码中,我尝试使用它:

<a onClick={this.changeRoute()}>Something/>
但这会直接重定向我,而无需点击它。。。。 我希望结果是它在我点击它之后调用我的函数。
我不明白什么?

用括号执行函数。要解决您的问题,请将其删除

<a onClick={this.changeRoute}>Something</a>

因为你马上就给它打电话。 从html中删除

应该是这样的:
Something/>

使用括号执行函数,并将结果作为要执行的内容传递。您基本上是说执行this.changeRoute,然后单击“执行this.changeRoute的结果”。相反,您希望执行此操作。changeRoute onClick。你可以这样做

<a onClick={(e) => this.changeRoute()}>Something</a>

第一个示例确保这是在changeRoute中绑定的。否则,您必须在第二个示例中的函数上调用bind函数

第二个示例传递的是实际函数,而不是函数的结果

在其他示例中,您可能希望在调用this.changeRoute时返回一个函数,在这种情况下,您的语法可以正常工作,因为您确实将返回值用作要调用的函数


有关更多信息,请查看。

您应该向我们展示您的实际代码,而不仅仅是一些可能甚至不包含实际错误的虚构代码。您当前的HTML有错误,没有标记。另外,您使用的是什么框架?onClick={}只是一个没有任何框架的破HTML。您使用的库将表达式{…}更改为执行JavaScript,因此它会立即执行。此行为与普通HTML锚标记中使用的onclick属性不同。请将此用法与普通HTML onclick属性(其中一个属性包含括号)进行比较。请将此用法与普通HTML onclick属性(其中一个属性包含括号)进行比较。您很可能需要绑定this.changeRoute,但最合适的方法取决于您正在使用的框架和您正在编写的JS版本。那么OP正在使用react?你怎么知道的?@RandyCasburn我可能错了,但我很确定答案会起作用,即使它不是反应。我以为是JSX。如果OP指定了一个无法使用此答案的库,我将更改或删除它。你错了。使用普通的旧DOM事件处理程序onclick,如果没有括号,它将无法工作。@JamesBot您是如何训练机器人回答问题的?让我说清楚。对于普通DOM事件onclick,这将起作用:{funcName},正如人们期望onclick事件起作用一样。如果有很多库,它很可能会立即执行。
<a onClick={this.changeRoute}>Something</a>