feat:点击元素外部事件后关闭菜单

This commit is contained in:
1708-huayu 2024-10-22 16:50:40 +08:00
parent 8a73b6f5b3
commit f14e6c0e34
1 changed files with 26 additions and 2 deletions

View File

@ -166,6 +166,7 @@ const ItemTree = (prop) => {
const [defaultValueState, setDefaultValueState] = useState(flushTree(prop.filePath)); const [defaultValueState, setDefaultValueState] = useState(flushTree(prop.filePath));
generateList(defaultValueState); generateList(defaultValueState);
const [state, setState] = useState(); const [state, setState] = useState();
const [inFrame, setInFrame] = useState(true);
useEffect(() => { useEffect(() => {
setDefaultValueState(flushTree(prop.filePath)) setDefaultValueState(flushTree(prop.filePath))
}, [prop]); }, [prop]);
@ -294,7 +295,18 @@ const ItemTree = (prop) => {
}); });
} }
const getNodeTreeRightClickMenu = () => { const getNodeTreeRightClickMenu = () => {
console.log("state", state, isEmpty(state)) useEffect(() => {
const handleKeyDown = (event) => {
if (!inFrame) {
event.preventDefault(); //
setState("");
}
};
document.addEventListener('click', handleKeyDown);
return () => {
document.removeEventListener('click', handleKeyDown);
};
});
if (isEmpty(state)) { if (isEmpty(state)) {
return return
} }
@ -321,6 +333,7 @@ const ItemTree = (prop) => {
menuItem.push(getMenuItem('6',<DirDeleteFile filePath={key} />)) menuItem.push(getMenuItem('6',<DirDeleteFile filePath={key} />))
} }
menuItem.push(getMenuItem('7',<OpenInDir filePath={key} />)) menuItem.push(getMenuItem('7',<OpenInDir filePath={key} />))
return <Fragment> return <Fragment>
{createPortal( {createPortal(
<Menu style={tmpStyle} onClick={e => <Menu style={tmpStyle} onClick={e =>
@ -328,7 +341,18 @@ const ItemTree = (prop) => {
console.log('onClick',e) console.log('onClick',e)
} }
} }
onMouseLeave={e => {setState("");}} //
onMouseLeave={e => {
console.log('onMouseLeave',e)
// setState("");
setInFrame(false)
}}
//
onMouseEnter={e => {
console.log('onMouseEnter',e)
// setState("");
setInFrame(true)
}}
items={menuItem}> items={menuItem}>
</Menu>, </Menu>,
document.body document.body