Reactjs React引导程序NavItem未触发onClick处理程序

Reactjs React引导程序NavItem未触发onClick处理程序,reactjs,react-bootstrap,Reactjs,React Bootstrap,当我使用React引导单击NavItem时,我试图调用click事件处理程序 我有以下代码: <Navbar fluid inverse> <Navbar.Header> <Navbar.Brand> {first} {last} </Navbar.Brand> <Navbar.Tog

当我使用React引导单击NavItem时,我试图调用click事件处理程序

我有以下代码:

<Navbar fluid inverse>
            <Navbar.Header>
                <Navbar.Brand>
                    {first} {last}
                </Navbar.Brand>
                <Navbar.Toggle/>
            </Navbar.Header>
            <Navbar.Collapse>
            <Nav>
                {navItems.map(item => {
                    return(
                        <NavItem                           
                        key={item[1]}
                        eventKey={item[1]}
                        onClick={()=> this.handleClick}
                        >
                            {item[0]}
                        </NavItem>
                    );
                })}                  
            </Nav>
            </Navbar.Collapse>
        </Navbar>
愚蠢的是,当我的onClick等于

<NavItem                           
  key={item[1]}
  eventKey={item[1]}
  onClick={()=> console.log("Hello")}
  >
  {item[0]}
 </NavItem>
它工作得很好,只有当我添加点击处理程序。。。有什么想法吗?

应该是onClick={=>this.handleClick}。在您的例子中,在=>函数中有this.handleClick。所以onClick正在执行=>,但是在这个函数体中this.handleClick只是函数对象,它不会被执行,因为您没有使用调用它

我建议执行onClick={this.handleClick.bindthis},原因是。

问题是您没有调用函数,而是返回了它。 替换此行:

onClick={()=> this.handleClick}
与:

此外,如果要访问函数中的事件,应将其传递给函数:

onClick={e => this.handleClick(e)}
再解释一下 在arrow函数中:

() => this.someFunction
翻译为:

var that = this
function() {
  return that.someFunction
}

令人惊叹的这起作用了。谢谢你的额外费用explanation@bflynnigan那你为什么不把它标为正确答案呢DI想,但我只能将一个答案标记为正确答案,而在你发布正确答案之前发布的那个人:
() => this.someFunction
var that = this
function() {
  return that.someFunction
}