【问题标题】:Whenever I call onClick function all the other onclick function gets called [duplicate]每当我调用 onClick 函数时,所有其他 onclick 函数都会被调用 [重复]
【发布时间】:2018-12-24 18:28:17
【问题描述】:

我有这个问题已经有一段时间了。每当我尝试单击链接并调用 onclick 函数时,都会调用所有其他 onclick 函数。我不知道这是怎么回事

<li className={activepage==="dashboard"?'active':''} onClick={changePage("dashboard")} >
    <a href="#">
        <i className="fa fa-dashboard fa-lg" /> Dashboard
    </a>
</li>

<li data-toggle="collapse" data-target="#products" className={activepage==="entries"?'active':''} onClick={changepage("entries")}>
    <a href="#" >
        <i className="fa fa-gift fa-lg" />Entries <i className="fas fa-down-arrow" />
        <span className="arrow" />
    </a>
</li>

我遇到了白人的这个问题,我找不到解决方案

【问题讨论】:

  • 看起来 changePage 不是闭包
  • changepage("dashboard")的代码是什么??尝试拨打onClick={() =&gt; changePage("dashboard")}
  • 你为什么还要使用className?在 html 中从未听说过,通常它只是 class="" 或 id=""..
  • @ChristopherSupertramp 那是因为 reactjs 代码。
  • @ChristopherSupertramp 这是 JSX 代码。不是真正的 html,但看起来像 html :) JSX is a preprocessor step that adds XML syntax to JavaScript.

标签: javascript node.js reactjs


【解决方案1】:

代替:

onClick={changepage("entries")}

试试这个:

onClick={() => changepage("entries")}

【讨论】:

  • 如何在功能组件上做到这一点?
  • 如果我正确理解了您的问题,请尝试将“this”添加到 changepage("entries") 中,例如 this.changepage.bind(this,"entries"),或者如果 entries 是一个变量然后 this.changepage.bind(this,entries)
【解决方案2】:

你可以使用绑定changepage.bind(null, "entries")或者你可以使用

() => {
 changepage("entries")
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2018-02-10
    • 2020-04-15
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多