针对渲染的 MenuItem 单击事件

Ret*_*ime 2 reactjs

我很沮丧,我讨厌 React,因为我领先一步,落后两步。现在的问题是 MenuItem 的方法 onCLick 事件是针对渲染时的,而不是当我有效单击菜单时。

MenuItem 位于 Drawer 组件内:

<Drawer
  open={this.props.state_open_list_dash}
  openSecondary={true}
  docked={false}
>
Run Code Online (Sandbox Code Playgroud)

和:

 <MenuItem 
    onClick={ this.handleChangeDash() }> Menu Name 
 </MenuItem>
Run Code Online (Sandbox Code Playgroud)

在构造函数中:

this.handleChangeDash = this.handleChangeDash.bind(this);
Run Code Online (Sandbox Code Playgroud)

进而:

handleChangeDash ()
{     
   console.log(20);
}
Run Code Online (Sandbox Code Playgroud)

控制台上的“20”会在应用程序刷新时打印(3 次),并且在由于更改 state_open_list_dash 的单击事件而打开抽屉时打印(2 次)。

我已经结束了这些想法。在网上搜索我没有发现有人遇到这个问题,所以我很担心。

谢谢

Ahs*_*Ali 6

onClick={ this.handleChangeDash() }这是因为您在运行时调用该函数。

将其更改为:

 <MenuItem 
    onClick={ this.handleChangeDash }> Menu Name 
 </MenuItem>
Run Code Online (Sandbox Code Playgroud)

或者你可以像这样创建一个箭头函数

 <MenuItem 
    onClick={ () => this.handleChangeDash() }> Menu Name 
 </MenuItem>
Run Code Online (Sandbox Code Playgroud)

onClick当事件发生时会自动调用它。