Commit 4a2d86b
committed
Don't reset work loop until stack is unwound
When replaying a suspended function components, we want to reuse the
hooks that were computed during the original render.
Currently we reset the state of the hooks right after the component
suspends (or throws an error). This is too early because it doesn't
give us an opportunity to wait for the promise to resolve.
This refactors the work loop to reset the hooks right before unwinding
instead of right after throwing. It doesn't include any other changes
yet, so there should be no observable behavioral change.1 parent 9dfbd9f commit 4a2d86b
File tree
5 files changed
+119
-22
lines changed- packages/react-reconciler/src
- __tests__
5 files changed
+119
-22
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
732 | 732 | | |
733 | 733 | | |
734 | 734 | | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
735 | 742 | | |
736 | 743 | | |
737 | 744 | | |
| 745 | + | |
738 | 746 | | |
| 747 | + | |
739 | 748 | | |
740 | 749 | | |
741 | 750 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
732 | 732 | | |
733 | 733 | | |
734 | 734 | | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
735 | 742 | | |
736 | 743 | | |
737 | 744 | | |
| 745 | + | |
738 | 746 | | |
| 747 | + | |
739 | 748 | | |
740 | 749 | | |
741 | 750 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
210 | 210 | | |
211 | 211 | | |
212 | 212 | | |
| 213 | + | |
213 | 214 | | |
214 | 215 | | |
215 | 216 | | |
| |||
1719 | 1720 | | |
1720 | 1721 | | |
1721 | 1722 | | |
1722 | | - | |
1723 | | - | |
1724 | | - | |
1725 | | - | |
| 1723 | + | |
| 1724 | + | |
| 1725 | + | |
| 1726 | + | |
| 1727 | + | |
| 1728 | + | |
| 1729 | + | |
| 1730 | + | |
| 1731 | + | |
| 1732 | + | |
| 1733 | + | |
1726 | 1734 | | |
1727 | 1735 | | |
1728 | 1736 | | |
| |||
1759 | 1767 | | |
1760 | 1768 | | |
1761 | 1769 | | |
1762 | | - | |
| 1770 | + | |
1763 | 1771 | | |
1764 | 1772 | | |
| 1773 | + | |
| 1774 | + | |
| 1775 | + | |
| 1776 | + | |
| 1777 | + | |
| 1778 | + | |
| 1779 | + | |
| 1780 | + | |
| 1781 | + | |
| 1782 | + | |
| 1783 | + | |
| 1784 | + | |
| 1785 | + | |
| 1786 | + | |
| 1787 | + | |
| 1788 | + | |
| 1789 | + | |
| 1790 | + | |
| 1791 | + | |
1765 | 1792 | | |
1766 | 1793 | | |
1767 | | - | |
1768 | | - | |
1769 | 1794 | | |
1770 | 1795 | | |
1771 | 1796 | | |
| |||
2317 | 2342 | | |
2318 | 2343 | | |
2319 | 2344 | | |
| 2345 | + | |
2320 | 2346 | | |
2321 | 2347 | | |
2322 | 2348 | | |
| |||
2355 | 2381 | | |
2356 | 2382 | | |
2357 | 2383 | | |
| 2384 | + | |
2358 | 2385 | | |
2359 | 2386 | | |
2360 | 2387 | | |
| |||
3707 | 3734 | | |
3708 | 3735 | | |
3709 | 3736 | | |
3710 | | - | |
3711 | | - | |
3712 | | - | |
3713 | | - | |
3714 | 3737 | | |
3715 | 3738 | | |
3716 | 3739 | | |
3717 | 3740 | | |
| 3741 | + | |
3718 | 3742 | | |
3719 | 3743 | | |
3720 | 3744 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
210 | 210 | | |
211 | 211 | | |
212 | 212 | | |
| 213 | + | |
213 | 214 | | |
214 | 215 | | |
215 | 216 | | |
| |||
1719 | 1720 | | |
1720 | 1721 | | |
1721 | 1722 | | |
1722 | | - | |
1723 | | - | |
1724 | | - | |
1725 | | - | |
| 1723 | + | |
| 1724 | + | |
| 1725 | + | |
| 1726 | + | |
| 1727 | + | |
| 1728 | + | |
| 1729 | + | |
| 1730 | + | |
| 1731 | + | |
| 1732 | + | |
| 1733 | + | |
1726 | 1734 | | |
1727 | 1735 | | |
1728 | 1736 | | |
| |||
1759 | 1767 | | |
1760 | 1768 | | |
1761 | 1769 | | |
1762 | | - | |
| 1770 | + | |
1763 | 1771 | | |
1764 | 1772 | | |
| 1773 | + | |
| 1774 | + | |
| 1775 | + | |
| 1776 | + | |
| 1777 | + | |
| 1778 | + | |
| 1779 | + | |
| 1780 | + | |
| 1781 | + | |
| 1782 | + | |
| 1783 | + | |
| 1784 | + | |
| 1785 | + | |
| 1786 | + | |
| 1787 | + | |
| 1788 | + | |
| 1789 | + | |
| 1790 | + | |
| 1791 | + | |
1765 | 1792 | | |
1766 | 1793 | | |
1767 | | - | |
1768 | | - | |
1769 | 1794 | | |
1770 | 1795 | | |
1771 | 1796 | | |
| |||
2317 | 2342 | | |
2318 | 2343 | | |
2319 | 2344 | | |
| 2345 | + | |
2320 | 2346 | | |
2321 | 2347 | | |
2322 | 2348 | | |
| |||
2355 | 2381 | | |
2356 | 2382 | | |
2357 | 2383 | | |
| 2384 | + | |
2358 | 2385 | | |
2359 | 2386 | | |
2360 | 2387 | | |
| |||
3707 | 3734 | | |
3708 | 3735 | | |
3709 | 3736 | | |
3710 | | - | |
3711 | | - | |
3712 | | - | |
3713 | | - | |
3714 | 3737 | | |
3715 | 3738 | | |
3716 | 3739 | | |
3717 | 3740 | | |
| 3741 | + | |
3718 | 3742 | | |
3719 | 3743 | | |
3720 | 3744 | | |
| |||
Lines changed: 31 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
643 | 643 | | |
644 | 644 | | |
645 | 645 | | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
646 | 677 | | |
647 | 678 | | |
648 | 679 | | |
| |||
0 commit comments