From e11bf42ceac5bb5ef0d7c98d0d075048c94352dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Markb=C3=A5ge?= Date: Thu, 5 Sep 2019 16:06:05 -0700 Subject: [PATCH] Check for Suspense boundary in a root Container (#16673) If we find a Container that might mean that we're on a node that is inside a Suspense boundary that is directly inside the Container root. Imagine the div is a Container and the span is a dehydrated instance: ```
``` There's no way to tests this yet since I'm not actually utilizing the return value yet. The solution is to just use the same path to check for a Suspense boundary as if we find a parent instance. --- packages/react-dom/src/client/ReactDOMComponentTree.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/react-dom/src/client/ReactDOMComponentTree.js b/packages/react-dom/src/client/ReactDOMComponentTree.js index 2fe287ec8b5a..02fcdd8ca025 100644 --- a/packages/react-dom/src/client/ReactDOMComponentTree.js +++ b/packages/react-dom/src/client/ReactDOMComponentTree.js @@ -49,12 +49,10 @@ export function getClosestInstanceFromNode(targetNode) { // instance. Note that we don't check this field on the targetNode // itself because the fibers are conceptually between the container // node and the first child. It isn't surrounding the container node. - targetInst = parentNode[internalContainerInstanceKey]; - if (targetInst) { - // If so, we return the HostRoot Fiber. - return targetInst; - } - targetInst = parentNode[internalInstanceKey]; + // If it's not a container, we check if it's an instance. + targetInst = + parentNode[internalContainerInstanceKey] || + parentNode[internalInstanceKey]; if (targetInst) { // Since this wasn't the direct target of the event, we might have // stepped past dehydrated DOM nodes to get here. However they could