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

时间:2015-12-11 12:47:52

标签: reactjs material-ui

当我点击左侧的元素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;

2 个答案:

答案 0 :(得分:8)

如果为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,问题应该得到解决。您仍然无法在_handleClickiconElementLeft上拥有onLeftIconButtonTouchTap,无论是其中一个。

答案 1 :(得分:0)

我无法看到您的代码出现任何问题,因此我猜您是否需要React-Tap-Event-Plugin。文档说这种依赖是暂时的,一旦反应v1.0被释放就会消失。