Reactjs 如何在重新加载时在safari上获取警报弹出窗口
在我的react项目中,我在重新加载或关闭选项卡时为警报用户创建了一个自定义挂钩 定制挂钩Reactjs 如何在重新加载时在safari上获取警报弹出窗口,reactjs,safari,onbeforeunload,Reactjs,Safari,Onbeforeunload,在我的react项目中,我在重新加载或关闭选项卡时为警报用户创建了一个自定义挂钩 定制挂钩 。。。。 const useTabClosewarning=(message=“确实要关闭吗?”)=>{ 常量[isDirty,setIsDirty]=useState(false); useffect(()=>{ //检测浏览器关闭 window.onbeforeunload=isDirty&(()=>消息); return()=>{ window.onbeforeunload=null; }; },[
。。。。
const useTabClosewarning=(message=“确实要关闭吗?”)=>{
常量[isDirty,setIsDirty]=useState(false);
useffect(()=>{
//检测浏览器关闭
window.onbeforeunload=isDirty&(()=>消息);
return()=>{
window.onbeforeunload=null;
};
},[isDirty]);
常量routerPrompt=;
返回[routerPrompt,()=>setIsDirty(true),()=>setIsDirty(false)];
};
....
组成部分
。。。。
const[Prompt,setDirty,setPristine]=useTabClosewarning();
useffect(()=>{
setDirty(真);
}, []);
返回(
{Prompt}
)
....
这在除safari之外的所有浏览器中都能正常工作。如何在safari中也实现这一点
....
const useTabClosewarning = (message = "Are you sure you want to close?") => {
const [isDirty, setIsDirty] = useState(false);
useEffect(() => {
// Detecting browser closing
window.onbeforeunload = isDirty && (() => message);
return () => {
window.onbeforeunload = null;
};
}, [isDirty]);
const routerPrompt = <Prompt when={isDirty} message={message} />;
return [routerPrompt, () => setIsDirty(true), () => setIsDirty(false)];
};
....
....
const [Prompt, setDirty, setPristine] = useTabClosewarning();
useEffect(() => {
setDirty(true);
}, []);
return (
<>
{Prompt}
</>
)
....