1550
NoWork,
1551
null,
1552
);
1553
+ primaryChildFragment.return = workInProgress;
1554
1555
if ((workInProgress.mode & BatchedMode) === NoMode) {
1556
// Outside of batched mode, we commit the effects from the
1561
? (workInProgress.child: any).child
1562
: (workInProgress.child: any);
1563
primaryChildFragment.child = progressedPrimaryChild;
1564
+ let progressedChild = progressedPrimaryChild;
1565
+ while (progressedChild !== null) {
1566
+ progressedChild.return = primaryChildFragment;
1567
+ progressedChild = progressedChild.sibling;
1568
+ }
1569
}
1570
1571
const fallbackChildFragment = createFiberFromFragment(
1574
renderExpirationTime,
1575
null,
1576
);
1577
+ fallbackChildFragment.return = workInProgress;
1578
primaryChildFragment.sibling = fallbackChildFragment;
1579
child = primaryChildFragment;
1580
// Skip the primary children, and continue working on the
1581
// fallback children.
1582
next = fallbackChildFragment;
1576
- child.return = next.return = workInProgress;
1583
} else {
1584
// Mount the primary children without an intermediate fragment fiber.
1585
const nextPrimaryChildren = nextProps.children;
1609
currentPrimaryChildFragment.pendingProps,
1610
NoWork,
1611
);
1612
+ primaryChildFragment.return = workInProgress;
1613
1614
if ((workInProgress.mode & BatchedMode) === NoMode) {
1615
// Outside of batched mode, we commit the effects from the
1621
: (workInProgress.child: any);
1622
if (progressedPrimaryChild !== currentPrimaryChildFragment.child) {
1623
primaryChildFragment.child = progressedPrimaryChild;
1624
+ let progressedChild = progressedPrimaryChild;
1625
+ while (progressedChild !== null) {
1626
+ progressedChild.return = primaryChildFragment;
1627
+ progressedChild = progressedChild.sibling;
1628
+ }
1629
}
1630
}
1631
1644
1645
// Clone the fallback child fragment, too. These we'll continue
1646
// working on.
1635
- const fallbackChildFragment = (primaryChildFragment.sibling = createWorkInProgress(
1647
+ const fallbackChildFragment = createWorkInProgress(
1648
currentFallbackChildFragment,
1649
nextFallbackChildren,
1650
currentFallbackChildFragment.expirationTime,
1639
- ));
1651
+ );
1652
+ fallbackChildFragment.return = workInProgress;
1653
+ primaryChildFragment.sibling = fallbackChildFragment;
1654
child = primaryChildFragment;
1655
primaryChildFragment.childExpirationTime = NoWork;
1656
// Skip the primary children, and continue working on the
1657
// fallback children.
1658
next = fallbackChildFragment;
1645
- child.return = next.return = workInProgress;
1659
} else {
1660
// No longer suspended. Switch back to showing the primary children,
1661
// and remove the intermediate fragment fiber.
1693
NoWork,
1694
null,
1695
);
1696
+ primaryChildFragment.return = workInProgress;
1697
primaryChildFragment.child = currentPrimaryChild;
1698
+ if (currentPrimaryChild !== null) {
1699
+ currentPrimaryChild.return = primaryChildFragment;
1700
+ }
1701
1702
// Even though we're creating a new fiber, there are no new children,
1703
// because we're reusing an already mounted tree. So we don't need to
1713
? (workInProgress.child: any).child
1714
: (workInProgress.child: any);
1715
primaryChildFragment.child = progressedPrimaryChild;
1716
+ let progressedChild = progressedPrimaryChild;
1717
+ while (progressedChild !== null) {
1718
+ progressedChild.return = primaryChildFragment;
1719
+ progressedChild = progressedChild.sibling;
1720
+ }
1721
}
1722
1723
// Because primaryChildFragment is a new fiber that we're inserting as the
1734
}
1735
1736
// Create a fragment from the fallback children, too.
1715
- const fallbackChildFragment = (primaryChildFragment.sibling = createFiberFromFragment(
1737
+ const fallbackChildFragment = createFiberFromFragment(
1738
nextFallbackChildren,
1739
mode,
1740
renderExpirationTime,
1741
null,
1720
- ));
1742
+ );
1743
+ fallbackChildFragment.return = workInProgress;
1744
+ primaryChildFragment.sibling = fallbackChildFragment;
1745
fallbackChildFragment.effectTag |= Placement;
1746
child = primaryChildFragment;
1747
primaryChildFragment.childExpirationTime = NoWork;
1748
// Skip the primary children, and continue working on the
1749
// fallback children.
1750
next = fallbackChildFragment;
1727
- child.return = next.return = workInProgress;
1751
} else {
1752
// Still haven't timed out. Continue rendering the children, like we
1753
// normally do.