React Material-UI 下拉菜单不起作用
React Material-UI dropdown menu not working
我正在使用 Material UI 创建一个简单的图标下拉菜单。但是在渲染字形之后出现并且在单击它之后没有显示 MenuItems
。这是代码-
import { IconMenu, IconButton } from 'material-ui' ;
const MoreVertIcon = require('material-ui/lib/svg-icons/navigation/more-vert');
const MenuItem = require('material-ui/lib/menus/menu-item');
const PostCard = React.createClass({
render: function() {
let button = (
<IconButton
touch={true}
tooltip='Click to see menu.'
tooltipPosition='bottom-left'>
<MoreVertIcon />
</IconButton>
);
return (
<IconMenu iconButtonElement={button}>
<MenuItem primaryText="Refresh" />
<MenuItem primaryText="Send feedback" />
<MenuItem primaryText="Settings" />
<MenuItem primaryText="Help" />
<MenuItem primaryText="Sign out" />
</IconMenu>
);
}
});
我遇到了类似的问题。解决方案是将其添加到应用程序的某处。我不确定它在哪里是否重要,但我尽可能在更高级别添加它:
var injectTapEventPlugin = require("react-tap-event-plugin");
injectTapEventPlugin();
在我的例子中,我必须添加 injectTapEventPlugin 以及更改处理程序。
var injectTapEventPlugin = require("react-tap-event-plugin");
const DropDownMenu = require('material-ui/lib/drop-down-menu');
...
injectTapEventPlugin(); // in constructor
...
handleChange(event, selectedIndex, menuItem) {
this.setState({menu: event.target.value });
}
...
// in render
let menuItems = [
{ payload: '0', text: 'Mon - Sun' },
{ payload: '1', text: 'Mon - Sat' },
{ payload: '2', text: 'Mon - Fri' },
{ payload: '3', text: 'Mon - Fri / Mon - Thu' },
];
...
// in render return
<DropDownMenu menuItems={menuItems} selectedIndex={this.state.menu} onChange={this.handleChange} />
只是想添加添加 injectTapEventPlugin 的原因。
根据300ms tap delay, gone away By Jake Archibald
浏览器停止等待双击 300 毫秒并且 React 的 onClick 没有给我们正确的句柄。
并根据 react-tap-event-plugin git page
Facebook is not planning on supporting tap events (#436) because browsers are fixing/removing the click delay. Unfortunately it will take a lot of time before all mobile browsers (including iOS' UIWebView) will and can be updated.
这就是我们需要注入插件的原因。
关于正确的解决方案,我决定添加包并将其注入应用程序的构造函数(我拥有的更高级别)。
进口:
import injectTapEventPlugin from 'react-tap-event-plugin';
在构造函数中:
injectTapEventPlugin();
我正在使用 Material UI 创建一个简单的图标下拉菜单。但是在渲染字形之后出现并且在单击它之后没有显示 MenuItems
。这是代码-
import { IconMenu, IconButton } from 'material-ui' ;
const MoreVertIcon = require('material-ui/lib/svg-icons/navigation/more-vert');
const MenuItem = require('material-ui/lib/menus/menu-item');
const PostCard = React.createClass({
render: function() {
let button = (
<IconButton
touch={true}
tooltip='Click to see menu.'
tooltipPosition='bottom-left'>
<MoreVertIcon />
</IconButton>
);
return (
<IconMenu iconButtonElement={button}>
<MenuItem primaryText="Refresh" />
<MenuItem primaryText="Send feedback" />
<MenuItem primaryText="Settings" />
<MenuItem primaryText="Help" />
<MenuItem primaryText="Sign out" />
</IconMenu>
);
}
});
我遇到了类似的问题。解决方案是将其添加到应用程序的某处。我不确定它在哪里是否重要,但我尽可能在更高级别添加它:
var injectTapEventPlugin = require("react-tap-event-plugin");
injectTapEventPlugin();
在我的例子中,我必须添加 injectTapEventPlugin 以及更改处理程序。
var injectTapEventPlugin = require("react-tap-event-plugin");
const DropDownMenu = require('material-ui/lib/drop-down-menu');
...
injectTapEventPlugin(); // in constructor
...
handleChange(event, selectedIndex, menuItem) {
this.setState({menu: event.target.value });
}
...
// in render
let menuItems = [
{ payload: '0', text: 'Mon - Sun' },
{ payload: '1', text: 'Mon - Sat' },
{ payload: '2', text: 'Mon - Fri' },
{ payload: '3', text: 'Mon - Fri / Mon - Thu' },
];
...
// in render return
<DropDownMenu menuItems={menuItems} selectedIndex={this.state.menu} onChange={this.handleChange} />
只是想添加添加 injectTapEventPlugin 的原因。
根据300ms tap delay, gone away By Jake Archibald
浏览器停止等待双击 300 毫秒并且 React 的 onClick 没有给我们正确的句柄。
并根据 react-tap-event-plugin git page
Facebook is not planning on supporting tap events (#436) because browsers are fixing/removing the click delay. Unfortunately it will take a lot of time before all mobile browsers (including iOS' UIWebView) will and can be updated.
这就是我们需要注入插件的原因。 关于正确的解决方案,我决定添加包并将其注入应用程序的构造函数(我拥有的更高级别)。
进口:
import injectTapEventPlugin from 'react-tap-event-plugin';
在构造函数中:
injectTapEventPlugin();