diff --git a/scripts/fiber/tests-failing.txt b/scripts/fiber/tests-failing.txt index 8db2ea6703..8d705c30e8 100644 --- a/scripts/fiber/tests-failing.txt +++ b/scripts/fiber/tests-failing.txt @@ -18,9 +18,6 @@ src/isomorphic/modern/element/__tests__/ReactJSXElementValidator-test.js src/renderers/dom/__tests__/ReactDOMProduction-test.js * should throw with an error code in production -src/renderers/dom/fiber/__tests__/ReactDOMFiber-test.js -* should reconcile portal children - src/renderers/dom/shared/__tests__/ReactDOM-test.js * throws in render() if the mount callback is not a function * throws in render() if the update callback is not a function diff --git a/scripts/fiber/tests-passing.txt b/scripts/fiber/tests-passing.txt index 7143e78caa..6eca915bf1 100644 --- a/scripts/fiber/tests-passing.txt +++ b/scripts/fiber/tests-passing.txt @@ -514,6 +514,7 @@ src/renderers/dom/fiber/__tests__/ReactDOMFiber-test.js * should render one portal * should render many portals * should render nested portals +* should reconcile portal children * should keep track of namespace across portals (simple) * should keep track of namespace across portals (medium) * should keep track of namespace across portals (complex) diff --git a/src/renderers/shared/fiber/ReactChildFiber.js b/src/renderers/shared/fiber/ReactChildFiber.js index 413fd234f6..175dded7c0 100644 --- a/src/renderers/shared/fiber/ReactChildFiber.js +++ b/src/renderers/shared/fiber/ReactChildFiber.js @@ -341,7 +341,7 @@ function ChildReconciler(shouldClone, shouldTrackSideEffects) { } else { // Update const existing = useFiber(current, priority); - existing.pendingProps = portal.children; + existing.pendingProps = portal; existing.return = returnFiber; return existing; } @@ -976,7 +976,7 @@ function ChildReconciler(shouldClone, shouldTrackSideEffects) { ) { deleteRemainingChildren(returnFiber, child.sibling); const existing = useFiber(child, priority); - existing.pendingProps = portal.children; + existing.pendingProps = portal; existing.return = returnFiber; return existing; } else { diff --git a/src/renderers/shared/fiber/ReactFiber.js b/src/renderers/shared/fiber/ReactFiber.js index 98e47ecaab..e6badf8e93 100644 --- a/src/renderers/shared/fiber/ReactFiber.js +++ b/src/renderers/shared/fiber/ReactFiber.js @@ -346,7 +346,7 @@ exports.createFiberFromYield = function(yieldNode : ReactYield, priorityLevel : exports.createFiberFromPortal = function(portal : ReactPortal, priorityLevel : PriorityLevel) : Fiber { const fiber = createFiber(HostPortal, portal.key); - fiber.pendingProps = portal.children; + fiber.pendingProps = portal; fiber.pendingWorkPriority = priorityLevel; fiber.stateNode = { containerInfo: portal.containerInfo, diff --git a/src/renderers/shared/fiber/ReactFiberBeginWork.js b/src/renderers/shared/fiber/ReactFiberBeginWork.js index ca68c0d01b..62447db5c3 100644 --- a/src/renderers/shared/fiber/ReactFiberBeginWork.js +++ b/src/renderers/shared/fiber/ReactFiberBeginWork.js @@ -325,7 +325,7 @@ module.exports = function( function updatePortalComponent(current, workInProgress) { const priorityLevel = workInProgress.pendingWorkPriority; - const nextChildren = workInProgress.pendingProps; + const nextChildren = workInProgress.pendingProps.children; if (!current) { // Portals are special because we don't append the children during mount // but at commit. Therefore we need to track insertions which the normal