diff --git a/packages/react-reconciler/src/ReactFiberCommitWork.js b/packages/react-reconciler/src/ReactFiberCommitWork.js index 0e31e58b64..1d2aea45b8 100644 --- a/packages/react-reconciler/src/ReactFiberCommitWork.js +++ b/packages/react-reconciler/src/ReactFiberCommitWork.js @@ -893,6 +893,7 @@ function commitNestedUnmounts( } function detachFiber(current: Fiber) { + const alternate = current.alternate; // Cut off the return pointers to disconnect it from the tree. Ideally, we // should clear the child pointer of the parent alternate to let this // get GC:ed but we don't know which for sure which parent is the current @@ -903,13 +904,14 @@ function detachFiber(current: Fiber) { current.memoizedState = null; current.updateQueue = null; current.dependencies = null; - const alternate = current.alternate; + current.sibling = null; + current.alternate = null; + current.firstEffect = null; + current.lastEffect = null; + current.pendingProps = null; + current.memoizedProps = null; if (alternate !== null) { - alternate.return = null; - alternate.child = null; - alternate.memoizedState = null; - alternate.updateQueue = null; - alternate.dependencies = null; + detachFiber(alternate); } }