反应 - material-ui 应用栏图标触摸事件不会触发

react - material-ui appbar icon touch event doesn't fire

当我单击元素 AppBar 时,左侧的图标应执行 _handleClick() 方法。 我无法收到控制台消息。 我正在使用 material-ui 框架,并且提供了 onLeftIconButtonTouchTap 属性,用于在通过触摸点击选择左侧图标时的回调函数。

import React, { Component } from 'react'
import { AppBar, IconButton } from 'material-ui'
import MoreVertIcon from 'material-ui/lib/svg-icons/navigation/more-vert';

let injectTapEventPlugin = require("react-tap-event-plugin");

//Needed for onTouchTap
//Can go away when react 1.0 release
//Check this repo:
//https://github.com/zilverline/react-tap-event-plugin
injectTapEventPlugin();


class Header extends Component {
  constructor(props) {
    super(props);
    this._handleClick = this._handleClick.bind(this);
  }

  _handleClick(e) {
    e.preventDefault();
    // Show/Hide the LeftMenu
    window.console.log("Click!");
  }

  render() {
       return (
        <AppBar title="Arasaaccc"
                iconElementLeft={ <IconButton>
                                    <MoreVertIcon/>
                                  </IconButton> }
                onLeftIconButtonTouchTap={ this._handleClick }
                isInitiallyOpen={ true } />


      )
  }
}

export default Header

但是它适用于另一个组件:

class Prueba extends Component {
  constructor(props) {
    super(props);
    this._handleClick = this._handleClick.bind(this);
  }

  _handleClick(e) {
    e.preventDefault();
    window.console.log("Click!");
  }
  render (){
    return (
      <h1 onClick={this._handleClick}>Prueba Prueba Prueba</h1>
      )
  }
}
export default Prueba;

我看不出您的代码有任何问题,所以我猜您需要 React-Tap-Event-Plugin。文档说这种依赖是暂时的,一旦 react v1.0 发布就会消失。

如果您为 AppBar 组件指定图标,onLeftIconButtonTouchTap 事件将不起作用。 要么你不指定图标:

<AppBar title="Arasaaccc" 
         onLeftIconButtonTouchTap={ this._handleClick }
                            isInitiallyOpen={ true } />

或者您在 IconButton 组件上应用该事件:

<AppBar title="Arasaaccc"
        iconElementLeft={ <IconButton onTouchTap={ this._handleClick }  >
                            <MoreVertIcon />
                          </IconButton> }
        isInitiallyOpen={ true } />

编辑: 注意,按照这个GitHub issue,应该可以解决问题。您仍然不能在 iconElementLeftonLeftIconButtonTouchTap 上同时使用 _handleClick,无论是其中之一。