Javascript 关闭鼠标悬停时打开的弹出菜单时,防止恢复焦点
我用的是react。我有以下问题: 我有一个输入组件和一个弹出菜单,在鼠标上方打开。 当菜单打开时,输入组件失去焦点。 当菜单关闭时,焦点将恢复到输入组件 我需要防止焦点恢复到输入元素 我如何实现这种行为Javascript 关闭鼠标悬停时打开的弹出菜单时,防止恢复焦点,javascript,reactjs,material-ui,frontend,Javascript,Reactjs,Material Ui,Frontend,我用的是react。我有以下问题: 我有一个输入组件和一个弹出菜单,在鼠标上方打开。 当菜单打开时,输入组件失去焦点。 当菜单关闭时,焦点将恢复到输入组件 我需要防止焦点恢复到输入元素 我如何实现这种行为 import React from "react"; import Button from "@material-ui/core/Button"; import Menu from "@material-ui/core/Menu";
import React from "react";
import Button from "@material-ui/core/Button";
import Menu from "@material-ui/core/Menu";
import MenuItem from "@material-ui/core/MenuItem";
import Input from "@material-ui/core/Input";
import { FormControl } from "@material-ui/core";
export default function SimpleMenu() {
const [anchorEl, setAnchorEl] = React.useState(null);
const inputRef = React.useRef();
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
const handleCloseAndRemoveFocus = () => {
console.log(inputRef.current);
if (inputRef.current) inputRef.current.blur();
setAnchorEl(null);
};
return (
<div>
<FormControl>
<Input autoFocus inputRef={inputRef} />
<Button onMouseDown={handleCloseAndRemoveFocus}>Clear focus</Button>
<Button
aria-controls="simple-menu"
aria-haspopup="true"
onMouseOver={handleClick}
>
Hover to open
</Button>
</FormControl>
<Menu
id="simple-menu"
anchorEl={anchorEl}
keepMounted
open={Boolean(anchorEl)}
onClose={handleClose}
>
<MenuItem onClick={handleClose}>Return to focused</MenuItem>
<MenuItem onClick={handleCloseAndRemoveFocus}>Clear focus</MenuItem>
</Menu>
</div>
);
}
从“React”导入React;
从“@物料界面/核心/按钮”导入按钮;
从“@material ui/core/Menu”导入菜单;
从“@material ui/core/MenuItem”导入菜单项;
从“@material ui/core/Input”导入输入;
从“@material ui/core”导入{FormControl}”;
导出默认函数simplemu(){
常量[anchorEl,setAnchorEl]=React.useState(null);
const inputRef=React.useRef();
常量handleClick=(事件)=>{
Setancorel(事件当前目标);
};
常量handleClose=()=>{
setAnchorEl(空);
};
常量handleCloseAndRemoveFocus=()=>{
console.log(inputRef.current);
if(inputRef.current)inputRef.current.blur();
setAnchorEl(空);
};
返回(
清晰的焦点
悬停打开
回归专注
清晰的焦点
);
}
在菜单组件上设置
disableRestoreFocus=true
。一旦菜单/模式被隐藏,这将阻止先前聚焦的元素恢复其焦点
...
此道具在上有文档记录,但也适用于菜单
,这是因为菜单构建在Modal之上
谢谢。我没有找到这个解决方案。文档在搜索“焦点”时未找到它。