@@ -323,7 +323,11 @@ function commitBeforeMutationLifeCycles(
323323  ) ; 
324324} 
325325
326- function  commitHookEffectListUnmount ( tag : HookEffectTag ,  finishedWork : Fiber )  { 
326+ function  commitHookEffectListUnmount ( 
327+   tag : HookEffectTag , 
328+   finishedWork : Fiber , 
329+   nearestMountedAncestor : Fiber  |  null , 
330+ )  { 
327331  const  updateQueue : FunctionComponentUpdateQueue  |  null  =  ( finishedWork . updateQueue : any ) ; 
328332  const  lastEffect  =  updateQueue  !==  null  ? updateQueue . lastEffect  : null ; 
329333  if  ( lastEffect  !==  null )  { 
@@ -335,7 +339,7 @@ function commitHookEffectListUnmount(tag: HookEffectTag, finishedWork: Fiber) {
335339        const  destroy  =  effect . destroy ; 
336340        effect . destroy  =  undefined ; 
337341        if  ( destroy  !==  undefined )  { 
338-           safelyCallDestroy ( finishedWork ,  destroy ) ; 
342+           safelyCallDestroy ( finishedWork ,  nearestMountedAncestor ,   destroy ) ; 
339343        } 
340344      } 
341345      effect  =  effect . next ; 
@@ -1598,12 +1602,17 @@ function commitWork(current: Fiber | null, finishedWork: Fiber): void {
15981602            commitHookEffectListUnmount ( 
15991603              HookLayout  |  HookHasEffect , 
16001604              finishedWork , 
1605+               finishedWork . return , 
16011606            ) ; 
16021607          }  finally  { 
16031608            recordLayoutEffectDuration ( finishedWork ) ; 
16041609          } 
16051610        }  else  { 
1606-           commitHookEffectListUnmount ( HookLayout  |  HookHasEffect ,  finishedWork ) ; 
1611+           commitHookEffectListUnmount ( 
1612+             HookLayout  |  HookHasEffect , 
1613+             finishedWork , 
1614+             finishedWork . return , 
1615+           ) ; 
16071616        } 
16081617        return ; 
16091618      } 
@@ -1658,12 +1667,20 @@ function commitWork(current: Fiber | null, finishedWork: Fiber): void {
16581667      )  { 
16591668        try  { 
16601669          startLayoutEffectTimer ( ) ; 
1661-           commitHookEffectListUnmount ( HookLayout  |  HookHasEffect ,  finishedWork ) ; 
1670+           commitHookEffectListUnmount ( 
1671+             HookLayout  |  HookHasEffect , 
1672+             finishedWork , 
1673+             finishedWork . return , 
1674+           ) ; 
16621675        }  finally  { 
16631676          recordLayoutEffectDuration ( finishedWork ) ; 
16641677        } 
16651678      }  else  { 
1666-         commitHookEffectListUnmount ( HookLayout  |  HookHasEffect ,  finishedWork ) ; 
1679+         commitHookEffectListUnmount ( 
1680+           HookLayout  |  HookHasEffect , 
1681+           finishedWork , 
1682+           finishedWork . return , 
1683+         ) ; 
16671684      } 
16681685      return ; 
16691686    } 
0 commit comments