我在我的React应用程序中有一个按钮。这个按钮在Web应用程序上按预期工作,但是当我在Chrome中打开我的iPhone上的应用程序时,按钮需要2次点击才能工作。第一次点击是为了触发悬停效果,第二个是触发onClick效果。我有两个svg文件-一个用于悬停状态和非悬停状态。svg图像将根据isHover值进行渲染。任何帮助都很感激!以下是我的代码:
const OptionsButton: FC<Props> = ({
disabled=false,
className="options-button",
onClick,
style={cursor:'pointer',height:'34',width:'34',bottom:'15', right:'15',position:'absolute' }
}) => {
const [isHover, setIsHover] = useState(false);
const handleMouseEnter = () => {
setIsHover(true);
}
const handleMouseLeave = () => {
setIsHover(false);
}
const handleClick = (e : React.MouseEvent<HTMLButtonElement>) => {
onClick(e);
e.stopPropagation();
}
return (
<>
{
( isHover )?
<OptionsBtnPr
className = {className}
onMouseLeave={handleMouseLeave}
onClick={handleClick}
style={style}
/> :
<OptionsBtn
className = {className}
onMouseEnter={handleMouseEnter}
onClick={handleClick}
style={style}
/>
}
</>
)
}
字符串
1条答案
按热度按时间jdgnovmf1#
在移动的设备上不需要悬停状态。对于移动的设备,我们总是可以返回
OptionsBtn
x使用
react-device-detect
库或任何其他方法将此isMobile
检查到位字符串
如果仍然出现任何问题,请尝试将
onMouseEnter
prop传递给OptionsBtn
(仅适用于!isMobile
)