Javascript 反应、点击事件和材料界面

Javascript 反应、点击事件和材料界面,javascript,reactjs,touch-event,material-ui,Javascript,Reactjs,Touch Event,Material Ui,我正在试用材质ui和react,我遇到了一个事件未触发的问题。我已经安装了react-tap事件插件,并在引导应用程序时调用injectTapEventPlugin() 以下代码段中从未调用toggleMenu: /** @jsx React.DOM */ var React = require('react'); var mui = require('material-ui'); var LeftNav = mui.LeftNav; var MenuItem = mui.MenuItem;

我正在试用
材质ui
react
,我遇到了一个事件未触发的问题。我已经安装了
react-tap事件插件
,并在引导应用程序时调用
injectTapEventPlugin()

以下代码段中从未调用
toggleMenu

/** @jsx React.DOM */
var React = require('react');
var mui  = require('material-ui');
var LeftNav = mui.LeftNav;
var MenuItem = mui.MenuItem;
var AppBar = mui.AppBar;
var App = React.createClass({

  getInitialState: function () {
    return {
      message: 'Hello World!'
    };
  },
  toggleMenu: function () {
    console.log('clicked hamburger'); //<-- This is never fired
    this.refs.menu.toggle();
  },

    render: function() {
        var menuItems = [{ route: 'get-started', text: 'Get Started' }];
        return (
<div>
    <AppBar onMenuIconButtonTouchTap = {this.toggleMenu}  title = "Hej" />
    <LeftNav ref = "menu" docked = {false}  menuItems = {menuItems} />
</div>
        );
    }

});

module.exports = App;
/**@jsx React.DOM*/
var React=要求('React');
var mui=要求(“材料-ui”);
var LeftNav=mui.LeftNav;
var MenuItem=mui.MenuItem;
var-AppBar=mui.AppBar;
var App=React.createClass({
getInitialState:函数(){
返回{
信息:“你好,世界!”
};
},
切换菜单:函数(){

log('clicked hamburger');//因此,我无法确定原因,但我认为问题在于如何将构建拆分为两个单独的文件

如果我更改您的GulpFile以排除构建
vendors.js
并删除该行

appBundler.external(options.development ? dependencies : []);
它将构建一个包含所有依赖项的js文件,并且一切都按预期工作

我关于为什么的理论:

当您从
main.js
捆绑包中删除依赖项时,主捆绑包最终只包含它所需的内容,其中只包含tap事件插件所需的小部分React。
React/lib/SyntheticUIEvent
等。因此,这些小部分将被修补以包含touchTap事件

但是,在供应商捆绑包中,您拥有完整的React,这是您在应用程序中所需要的。这没有经过修补以包含touchTap事件,因此没有任何touchTap事件被实际触发,因为您所包含的React没有正确修补