【问题标题】:react - material-ui appbar icon touch event doesn't firereact - material-ui appbar图标触摸事件不会触发
【发布时间】:2015-12-11 12:47:52
【问题描述】:

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

【问题讨论】:

    标签: reactjs material-ui


    【解决方案1】:

    如果为 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,无论是其中一个。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我猜 React-Tap-Event-Plugin 不是原因(只是等待 300 毫秒)。无论如何,我更新了代码,并用一个简单的类做了类似的事情
      • 插件能用吗?您的其他组件使用 onClick 事件,因此当然会在本机触发。
      • 不,插件没有帮助 :-(
      • 想知道这是否可以解决问题? github.com/hartmamt/react-with-tap-events/blob/master/src/…
      • 深入挖掘here。某些版本的 React 和 React-Tap-Event-Plugin 可能需要进行一些调整,以便您可以使用点击事件。
      猜你喜欢
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多