React、点击事件和 material-ui
React, tap events and 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;
可以从这里查看完整的代码示例:https://github.com/oskbor/lunch-mirror
很高兴对我做错的任何建议!
所以,我无法确定原因,但我认为问题在于您如何将构建分成 2 个单独的文件。
如果我更改您的 GulpFile 以排除 vendors.js
的构建并删除行
appBundler.external(options.development ? dependencies : []);
它将构建一个包含所有依赖项的单个 js 文件,并且一切都按预期进行。
我的理论是:
当您从 main.js
包中删除依赖项时,主包最终会包含它所需要的内容,其中仅包含点击事件插件所需的小部分 React。 react/lib/SyntheticUIEvent
,等等。因此,这些小块得到修补以包含 touchTap 事件。
但是,在供应商捆绑包中,您拥有完整的 React,这正是您的应用程序所需要的。这没有修补以包含 touchTap 事件,因此实际上没有触发任何 touchTap 事件,因为您包含的 React 没有得到正确修补。
我正在尝试 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;
可以从这里查看完整的代码示例:https://github.com/oskbor/lunch-mirror
很高兴对我做错的任何建议!
所以,我无法确定原因,但我认为问题在于您如何将构建分成 2 个单独的文件。
如果我更改您的 GulpFile 以排除 vendors.js
的构建并删除行
appBundler.external(options.development ? dependencies : []);
它将构建一个包含所有依赖项的单个 js 文件,并且一切都按预期进行。
我的理论是:
当您从 main.js
包中删除依赖项时,主包最终会包含它所需要的内容,其中仅包含点击事件插件所需的小部分 React。 react/lib/SyntheticUIEvent
,等等。因此,这些小块得到修补以包含 touchTap 事件。
但是,在供应商捆绑包中,您拥有完整的 React,这正是您的应用程序所需要的。这没有修补以包含 touchTap 事件,因此实际上没有触发任何 touchTap 事件,因为您包含的 React 没有得到正确修补。