javascript - React redux 应用程序全局运行一个函数
问题描述
我尝试检测浏览器或选项卡已关闭。在整个大型应用程序中运行一项功能的最佳方式是什么?
window.onbeforeunload = function () {
return "Do you want to close?";
};
解决方案
你可以使用反应钩子并在你的 App.js 中实现它。我称之为 useBeforeUnload :D
import { useEffect } from 'react'
const useBeforeUnload = (
value: ((evt: BeforeUnloadEvent) => any) | string
) => {
const handleBeforeunload = (evt: BeforeUnloadEvent) => {
let returnValue
if (typeof value === 'function') {
returnValue = value(evt)
} else {
returnValue = value
}
if (returnValue) {
evt.preventDefault()
evt.returnValue = returnValue
}
return returnValue
}
useEffect(() => {
window.addEventListener('beforeunload', handleBeforeunload)
return () => window.removeEventListener('beforeunload', handleBeforeunload)
}, [])
}
export default useBeforeUnload
推荐阅读
- r - 如何利用未来未知的数据?
- javascript - 如何在闭包中访问它?
- elasticsearch - 避免通过多个 select 语句连接 - Logstash
- javascript - 如何在新版本的 Stripe 中使用测试数据填充信用卡输入字段?
- vb.net - 短随机播放 Textbox1 等于 Textbox2
- mongodb - 在 WSO2 中添加 MongoDB 作为外部数据源
- java - 如何使用 Android Room 存储数据记录
- php - 如何使用 SQL 更新记录
- testing - 为什么 TestGesture.moveBy 在 TabBarView 中滚动失败?
- excel - 在条件格式中比较数据透视表的列标签