gpt4 book ai didi

javascript - 单击 react 图标图标时菜单未打开

转载 作者:行者123 更新时间:2023-12-05 03:19:45 27 4
gpt4 key购买 nike

我有一个菜单,当我点击一个按钮时应该打开。并在我再次单击按钮或单击菜单外部时关闭。它工作正常,但是当我点击按钮内的 svg icon 时它有一个错误,它不起作用,菜单没有打开。

 const MoreActionBtn = () => {
const [showMoreAction, setShowMoreAction] = useState(false);
const moreBtns = useRef();
const { current } = moreBtns;

useEffect(() => {
const outSideClickHandler = (e) => {
if (current && !current.contains(e.target)) {
setShowMoreAction(false);
}
};
document.addEventListener("click", outSideClickHandler);
return () => {
document.removeEventListener("click", outSideClickHandler);
};
}, [current]);

function toggleMoreAcrion() {
setShowMoreAction((prev) => !prev);
}

return (
<div ref={moreBtns} className="more-action-wrapper">
{showMoreAction && (
<div>
<button>
<MdDone />
</button>
<button>
<MdOutlineModeEdit />
</button>
</div>
)}
<button onClick={toggleMoreAcrion}>
{showMoreAction ? <MdOutlineCancel /> : <MdStars />}
</button>
</div>
);
};

这是一个codesandbox我的代码。有更好的解决方案吗?

最佳答案

这个问题似乎比我想象的要简单和奇怪。不知何故,MdStarreact-icons 渲染的 svg 捕捉到了点击。为避免这种情况,请添加以下 CSS:

.more-action-wrapper svg {
pointer-events: none;
}

您的 CodeSandbox 的工作分支 here .

关于javascript - 单击 react 图标图标时菜单未打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73360591/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com