From dbe9e732af1f12757a55adb12a8279d7db898b60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Markb=C3=A5ge?= Date: Fri, 18 Mar 2022 16:51:40 -0400 Subject: [PATCH] Avoid conditions where control flow is sufficient (#24126) This also fixes a type error since resetTextContent can only be called on Instances. --- .../src/ReactFiberCommitWork.new.js | 46 ++++++++----------- .../src/ReactFiberCommitWork.old.js | 46 ++++++++----------- 2 files changed, 38 insertions(+), 54 deletions(-) diff --git a/packages/react-reconciler/src/ReactFiberCommitWork.new.js b/packages/react-reconciler/src/ReactFiberCommitWork.new.js index 75553555b928d..7a941dc15f401 100644 --- a/packages/react-reconciler/src/ReactFiberCommitWork.new.js +++ b/packages/react-reconciler/src/ReactFiberCommitWork.new.js @@ -1567,22 +1567,29 @@ function commitPlacement(finishedWork: Fiber): void { const parentFiber = getHostParentFiber(finishedWork); // Note: these two variables *must* always be updated together. - let parent; - let isContainer; - const parentStateNode = parentFiber.stateNode; switch (parentFiber.tag) { - case HostComponent: - parent = parentStateNode; - isContainer = false; + case HostComponent: { + const parent: Instance = parentFiber.stateNode; + if (parentFiber.flags & ContentReset) { + // Reset the text content of the parent before doing any insertions + resetTextContent(parent); + // Clear ContentReset from the effect tag + parentFiber.flags &= ~ContentReset; + } + + const before = getHostSibling(finishedWork); + // We only have the top Fiber that was inserted but we need to recurse down its + // children to find all the terminal nodes. + insertOrAppendPlacementNode(finishedWork, before, parent); break; + } case HostRoot: - parent = parentStateNode.containerInfo; - isContainer = true; - break; - case HostPortal: - parent = parentStateNode.containerInfo; - isContainer = true; + case HostPortal: { + const parent: Container = parentFiber.stateNode.containerInfo; + const before = getHostSibling(finishedWork); + insertOrAppendPlacementNodeIntoContainer(finishedWork, before, parent); break; + } // eslint-disable-next-line-no-fallthrough default: throw new Error( @@ -1590,21 +1597,6 @@ function commitPlacement(finishedWork: Fiber): void { 'in React. Please file an issue.', ); } - if (parentFiber.flags & ContentReset) { - // Reset the text content of the parent before doing any insertions - resetTextContent(parent); - // Clear ContentReset from the effect tag - parentFiber.flags &= ~ContentReset; - } - - const before = getHostSibling(finishedWork); - // We only have the top Fiber that was inserted but we need to recurse down its - // children to find all the terminal nodes. - if (isContainer) { - insertOrAppendPlacementNodeIntoContainer(finishedWork, before, parent); - } else { - insertOrAppendPlacementNode(finishedWork, before, parent); - } } function insertOrAppendPlacementNodeIntoContainer( diff --git a/packages/react-reconciler/src/ReactFiberCommitWork.old.js b/packages/react-reconciler/src/ReactFiberCommitWork.old.js index 23e9d6070c9a2..e4b2c3a5387a1 100644 --- a/packages/react-reconciler/src/ReactFiberCommitWork.old.js +++ b/packages/react-reconciler/src/ReactFiberCommitWork.old.js @@ -1567,22 +1567,29 @@ function commitPlacement(finishedWork: Fiber): void { const parentFiber = getHostParentFiber(finishedWork); // Note: these two variables *must* always be updated together. - let parent; - let isContainer; - const parentStateNode = parentFiber.stateNode; switch (parentFiber.tag) { - case HostComponent: - parent = parentStateNode; - isContainer = false; + case HostComponent: { + const parent: Instance = parentFiber.stateNode; + if (parentFiber.flags & ContentReset) { + // Reset the text content of the parent before doing any insertions + resetTextContent(parent); + // Clear ContentReset from the effect tag + parentFiber.flags &= ~ContentReset; + } + + const before = getHostSibling(finishedWork); + // We only have the top Fiber that was inserted but we need to recurse down its + // children to find all the terminal nodes. + insertOrAppendPlacementNode(finishedWork, before, parent); break; + } case HostRoot: - parent = parentStateNode.containerInfo; - isContainer = true; - break; - case HostPortal: - parent = parentStateNode.containerInfo; - isContainer = true; + case HostPortal: { + const parent: Container = parentFiber.stateNode.containerInfo; + const before = getHostSibling(finishedWork); + insertOrAppendPlacementNodeIntoContainer(finishedWork, before, parent); break; + } // eslint-disable-next-line-no-fallthrough default: throw new Error( @@ -1590,21 +1597,6 @@ function commitPlacement(finishedWork: Fiber): void { 'in React. Please file an issue.', ); } - if (parentFiber.flags & ContentReset) { - // Reset the text content of the parent before doing any insertions - resetTextContent(parent); - // Clear ContentReset from the effect tag - parentFiber.flags &= ~ContentReset; - } - - const before = getHostSibling(finishedWork); - // We only have the top Fiber that was inserted but we need to recurse down its - // children to find all the terminal nodes. - if (isContainer) { - insertOrAppendPlacementNodeIntoContainer(finishedWork, before, parent); - } else { - insertOrAppendPlacementNode(finishedWork, before, parent); - } } function insertOrAppendPlacementNodeIntoContainer(