logo
/
ReactのuseEffectでのアンマウント処理は普通の更新や遷移では発火しない
あくまで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')
       }
     }
   })