あくまでSPAとしての遷移に対するライフサイクルなので、routerでの遷移では発火する。
通常の更新や手動のページ移動などでは、jsのbeforeunload``unload
などを使う
useEffect(() => {
// 終了処理命令が発生し、実際に離れる前に発火
// ここで終了をキャンセルことができる
const onUnload = () => {
console.log('begore unload')
}
window.addEventListener('beforeunload', onUnload)
return () => window.removeEventListener('beforeunload', onUnload)
}, [])
useEffect(() => {
// beforeunloadの後に発火?DOMが破棄された後?
const onUnload = () => console.log('unload')
window.addEventListener('unload', onUnload)
return () => window.removeEventListener('unload', onUnload)
}, [])
useEffect(() => {
// リロード
if (window.performance) {
if (performance.navigation.type === 1) {
console.log('reload')
}
}
})