当我点击左侧的元素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;
答案 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,问题应该得到解决。您仍然无法在_handleClick
和iconElementLeft
上拥有onLeftIconButtonTouchTap
,无论是其中一个。
答案 1 :(得分:0)
我无法看到您的代码出现任何问题,因此我猜您是否需要React-Tap-Event-Plugin。文档说这种依赖是暂时的,一旦反应v1.0被释放就会消失。