Ste*_*eve 6 html javascript reactjs material-ui
我正在尝试在 Popper 中放置一个选择菜单。我遇到的问题是,嵌套选择菜单想要将弹出菜单作为邻居而不是 popper 的子项安装在主体上。这会导致点击事件触发。这是重现它的代码:
import React, { useState } from "react";
import "./styles.css";
import Popper from "@material-ui/core/Popper";
import TextField from "@material-ui/core/TextField";
import MenuItem from "@material-ui/core/MenuItem";
import ClickAwayListener from "@material-ui/core/ClickAwayListener";
export default function App() {
const [popperAnc, setPopperAnc] = useState(null);
const popperOpen = Boolean(popperAnc);
return (
<div className="App">
<div
onClick={e => {
setPopperAnc(e.currentTarget);
}}
>
Popper anchor
</div>
<div style={{ position: "absolute" }}>
<Popper open={popperOpen} anchorEl={popperAnc}>
<ClickAwayListener
onClickAway={e => {
setPopperAnc(null);
}}
>
<TextField select label="Menu">
<MenuItem value="select1">Select me!</MenuItem>
</TextField>
</ClickAwayListener>
</Popper>
</div>
</div>
);
}Run Code Online (Sandbox Code Playgroud)
https://codesandbox.io/s/strange-bassi-liwdc?file=/src/App.js:0-1013
Select- 就使用它(不要使用TextField,它没有任何意义)。disabledPortal上进行设置)。MenuPropsSelect <div style={{ position: "absolute" }}>
<Popper open={popperOpen} anchorEl={popperAnc}>
<ClickAwayListener
onClickAway={e => {
console.log("click away");
setPopperAnc(null);
}}
>
<div>
<div>Wow</div>
<Select
label="Menu"
MenuProps={{
disablePortal: true,
anchorEl: this,
style: { marginTop: "20px", width: "150px", height: "200px" }
}}
>
<MenuItem value="select1">Select me!</MenuItem>
</Select>
</div>
</ClickAwayListener>
</Popper>
</div>
Run Code Online (Sandbox Code Playgroud)
这是一个工作示例: https://codesandbox.io/s/mui-nested-popper-4uu5l ?file=/src/App.js