feat:点击元素外部事件后关闭菜单
This commit is contained in:
parent
8a73b6f5b3
commit
f14e6c0e34
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue