osk*_*bor 28 javascript touch-event reactjs material-ui
我正在尝试material-ui
,react
而且我遇到了一个没有解雇事件的问题.我在引导应用程序的同时安装了react-tap-event-plugin
和我一起调用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;
Run Code Online (Sandbox Code Playgroud)
完整的代码示例可以从这里查看:https://github.com/oskbor/lunch-mirror
对于我做错了什么建议感到高兴!
Cro*_*rob 17
所以,我无法确定为什么这是原因,但我认为问题是你如何将你的构建分成两个单独的文件.
如果我更改你的GulpFile以排除建筑物vendors.js
并删除该线路
appBundler.external(options.development ? dependencies : []);
Run Code Online (Sandbox Code Playgroud)
它将构建一个包含所有依赖项的单个js文件,一切都按预期工作.
我的理论为什么:
当您从main.js
捆绑包中删除依赖项时,主捆绑包最终会包含它所需要的内容,其中只包含tap-event插件所需的一小部分React.react/lib/SyntheticUIEvent
等等.那些小块被修补以包含touchTap事件.
但是,在供应商捆绑包中,您拥有完整的React,这是您在应用程序中所需的.这不包括touchTap事件,因此没有触发任何touchTap事件,因为您所包含的React未正确修补.