Javascript 如何使用Material UI在React JS中实现下拉菜单?
我有一个下拉菜单,它有一个嵌套菜单,如下所示 展开时的下拉列表显示两个选项: 问题在于单击租户名称或经销商ID下的子选项中的任何一项显示一秒钟后消失。 如何解决这个问题,接下来是如何存储用户选择的值 我的代码如下:Javascript 如何使用Material UI在React JS中实现下拉菜单?,javascript,reactjs,drop-down-menu,material-ui,Javascript,Reactjs,Drop Down Menu,Material Ui,我有一个下拉菜单,它有一个嵌套菜单,如下所示 展开时的下拉列表显示两个选项: 问题在于单击租户名称或经销商ID下的子选项中的任何一项显示一秒钟后消失。 如何解决这个问题,接下来是如何存储用户选择的值 我的代码如下: export default class DropDownMenuSimpleExample extends React.Component { constructor(props) { super(props); this.state = { dropDownDa
export default class DropDownMenuSimpleExample extends React.Component {
constructor(props) {
super(props);
this.state = {
dropDownData: [
{
value: '',
tenantName: '',
dealerId: '',
},
],
};
}
handleChange = (event, index, value) => {
this.setState({ value });
console.log(event, index, value);
}
render() {
return (
<DropDownMenu
style={styles.customWidth}
anchorOrigin={{ horizontal: 'left', vertical: 'top' }}
targetOrigin={{ horizontal: 'left', vertical: 'top' }}
className={{ backgroundcolor: '#CFD8DC' }}
>
<MenuItem
value={this.state.value}
onChange={this.handleChange}
primaryText="TENANT NAME"
rightIcon={<ArrowDropRight />}
menuItems={[
<MenuItem value={100} primaryText="CA-CAR" />,
<Divider />,
<MenuItem value={101} primaryText="TEKION" />,
]}
/>
<MenuItem
value={this.state.value}
onChange={this.handleChange}
primaryText="DEALER ID"
rightIcon={<ArrowDropRight />}
menuItems={[
<MenuItem value={1} primaryText="1" />,
<MenuItem value={2} primaryText="2" />,
<MenuItem value={3} primaryText="2" />,
<MenuItem value={4} primaryText="4" />,
]}
/>
</DropDownMenu>
);
}
}
导出默认类下拉菜单UsimpleExample扩展React.Component{
建造师(道具){
超级(道具);
此.state={
下拉数据:[
{
值:“”,
租户名称:“”,
dealerId:“”,
},
],
};
}
handleChange=(事件、索引、值)=>{
this.setState({value});
日志(事件、索引、值);
}
render(){
返回(
);
}
}
要获取用户选择的值,需要绑定onChange事件,如
<SelectField onChange={(evt,index,name) =>this.getOccasion(name) />
getOccasion()
{
this.setState({
//update to state
})
}
让我们看看下面的源代码,这有助于您更好地理解:
Dropdown.js
这是一个下拉组件类,它帮助我们呈现下拉菜单内容。当用户单击下拉菜单时,该组件类将在浏览器中呈现更新的下拉菜单列表
显示下拉菜单:此方法有助于显示下拉菜单内容。
隐藏下拉菜单:此方法有助于隐藏下拉菜单内容
import React from 'react';
import './style.css';
class Dropdown extends React.Component {
constructor(){
super();
this.state = {
displayMenu: false,
};
this.showDropdownMenu = this.showDropdownMenu.bind(this);
this.hideDropdownMenu = this.hideDropdownMenu.bind(this);
};
showDropdownMenu(event) {
event.preventDefault();
this.setState({ displayMenu: true }, () => {
document.addEventListener('click', this.hideDropdownMenu);
});
}
hideDropdownMenu() {
this.setState({ displayMenu: false }, () => {
document.removeEventListener('click', this.hideDropdownMenu);
});
}
render() {
return (
<div className="dropdown" style = {{background:"red",width:"200px"}} >
<div className="button" onClick={this.showDropdownMenu}> My Setting </div>
{ this.state.displayMenu ? (
<ul>
<li><a className="active" href="#Create Page">Create Page</a></li>
<li><a href="#Manage Pages">Manage Pages</a></li>
<li><a href="#Create Ads">Create Ads</a></li>
<li><a href="#Manage Ads">Manage Ads</a></li>
<li><a href="#Activity Logs">Activity Logs</a></li>
<li><a href="#Setting">Setting</a></li>
<li><a href="#Log Out">Log Out</a></li>
</ul>
):
(
null
)
}
</div>
);
}
}
export default Dropdown;
}
index.js
这是帮助显示下拉菜单的主要组件
.dropdown {
position: relative;
display: inline-block;
}
ul {
list-style-type: none;
margin: 0;
padding: 0;
top:45px;
right:0px;
width: 200px;
background-color: white;
font-weight:bold;
position: absolute;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
}
li a {
color: #000;
text-decoration: none;
}
li {
padding: 8px 16px;
border-bottom: 1px solid #e5e5e5;
}
li:last-child {
border-bottom: none;
}
li:hover {
background-color: #e5e5e5;
color: white;
}
.button{
width:178px;
height:18px;
background-color:#ff3232 ;
padding:12px;
border-radius:5px;
font-weight:bold;
color:white;
}
.button:before{
content:"";
position:absolute;
width:0px;
height:0px;
border: 10px solid;
border-color: white transparent transparent transparent;
right:6px;
top:18px;
import React from 'react';
import ReactDOM from 'react-dom';
import registerServiceWorker from './registerServiceWorker';
import Dropdown from './dropdownmenu/Dropdown';
var displayDropdown = (
<div style={{display: 'flex', justifyContent: 'center'}} >
<Dropdown />
</div>
);
ReactDOM.render(displayDropdown, document.getElementById('root'));
registerServiceWorker();
从“React”导入React;
从“react dom”导入react dom;
从“./registerServiceWorker”导入registerServiceWorker;
从“./dropdownmenu/Dropdown”导入下拉菜单;
变量显示下拉菜单=(
);
render(displayDropdown,document.getElementById('root');
registerServiceWorker();
否决投票,因为问题是关于材料UI的。
.dropdown {
position: relative;
display: inline-block;
}
ul {
list-style-type: none;
margin: 0;
padding: 0;
top:45px;
right:0px;
width: 200px;
background-color: white;
font-weight:bold;
position: absolute;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
}
li a {
color: #000;
text-decoration: none;
}
li {
padding: 8px 16px;
border-bottom: 1px solid #e5e5e5;
}
li:last-child {
border-bottom: none;
}
li:hover {
background-color: #e5e5e5;
color: white;
}
.button{
width:178px;
height:18px;
background-color:#ff3232 ;
padding:12px;
border-radius:5px;
font-weight:bold;
color:white;
}
.button:before{
content:"";
position:absolute;
width:0px;
height:0px;
border: 10px solid;
border-color: white transparent transparent transparent;
right:6px;
top:18px;
import React from 'react';
import ReactDOM from 'react-dom';
import registerServiceWorker from './registerServiceWorker';
import Dropdown from './dropdownmenu/Dropdown';
var displayDropdown = (
<div style={{display: 'flex', justifyContent: 'center'}} >
<Dropdown />
</div>
);
ReactDOM.render(displayDropdown, document.getElementById('root'));
registerServiceWorker();