Commit de5f63f
committed
Fix: useId in strict mode
In strict mode, `renderWithHooks` is called twice to flush out
side effects.
Modying the tree context (`pushTreeId` and `pushTreeFork`) is effectful,
so before this fix, the tree context was allocating two slots for a
materialized id instead of one.
To address, I lifted those calls outside of `renderWithHooks`. This
is how I had originally structured it, and it's how Fizz is structured,
too. The other solution would be to reset the stack in between the calls
but that's also a bit weird because we usually only ever reset the
stack during unwind or complete.1 parent 9fb3442 commit de5f63f
File tree
8 files changed
+144
-36
lines changed- packages
- react-dom/src/__tests__
- react-reconciler/src
- react-server/src
8 files changed
+144
-36
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
198 | 198 | | |
199 | 199 | | |
200 | 200 | | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
201 | 230 | | |
202 | 231 | | |
203 | 232 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
174 | 174 | | |
175 | 175 | | |
176 | 176 | | |
177 | | - | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
178 | 182 | | |
179 | 183 | | |
180 | 184 | | |
| |||
240 | 244 | | |
241 | 245 | | |
242 | 246 | | |
| 247 | + | |
243 | 248 | | |
244 | 249 | | |
245 | 250 | | |
| |||
365 | 370 | | |
366 | 371 | | |
367 | 372 | | |
| 373 | + | |
368 | 374 | | |
369 | 375 | | |
370 | 376 | | |
| |||
380 | 386 | | |
381 | 387 | | |
382 | 388 | | |
| 389 | + | |
383 | 390 | | |
384 | 391 | | |
385 | 392 | | |
| |||
394 | 401 | | |
395 | 402 | | |
396 | 403 | | |
| 404 | + | |
397 | 405 | | |
398 | 406 | | |
399 | 407 | | |
| |||
408 | 416 | | |
409 | 417 | | |
410 | 418 | | |
| 419 | + | |
411 | 420 | | |
412 | 421 | | |
413 | 422 | | |
| |||
418 | 427 | | |
419 | 428 | | |
420 | 429 | | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
421 | 434 | | |
422 | 435 | | |
423 | 436 | | |
| |||
970 | 983 | | |
971 | 984 | | |
972 | 985 | | |
| 986 | + | |
973 | 987 | | |
974 | 988 | | |
975 | 989 | | |
| |||
985 | 999 | | |
986 | 1000 | | |
987 | 1001 | | |
| 1002 | + | |
988 | 1003 | | |
989 | 1004 | | |
990 | 1005 | | |
| |||
999 | 1014 | | |
1000 | 1015 | | |
1001 | 1016 | | |
| 1017 | + | |
1002 | 1018 | | |
1003 | 1019 | | |
1004 | 1020 | | |
| |||
1013 | 1029 | | |
1014 | 1030 | | |
1015 | 1031 | | |
| 1032 | + | |
1016 | 1033 | | |
1017 | 1034 | | |
1018 | 1035 | | |
| |||
1023 | 1040 | | |
1024 | 1041 | | |
1025 | 1042 | | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
1026 | 1047 | | |
1027 | 1048 | | |
1028 | 1049 | | |
| |||
1593 | 1614 | | |
1594 | 1615 | | |
1595 | 1616 | | |
| 1617 | + | |
1596 | 1618 | | |
1597 | 1619 | | |
1598 | 1620 | | |
| |||
1629 | 1651 | | |
1630 | 1652 | | |
1631 | 1653 | | |
| 1654 | + | |
1632 | 1655 | | |
1633 | 1656 | | |
1634 | 1657 | | |
| |||
1639 | 1662 | | |
1640 | 1663 | | |
1641 | 1664 | | |
| 1665 | + | |
1642 | 1666 | | |
1643 | 1667 | | |
1644 | 1668 | | |
| |||
1758 | 1782 | | |
1759 | 1783 | | |
1760 | 1784 | | |
| 1785 | + | |
1761 | 1786 | | |
1762 | 1787 | | |
1763 | 1788 | | |
1764 | 1789 | | |
1765 | 1790 | | |
1766 | 1791 | | |
| 1792 | + | |
| 1793 | + | |
| 1794 | + | |
| 1795 | + | |
1767 | 1796 | | |
1768 | 1797 | | |
1769 | 1798 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
174 | 174 | | |
175 | 175 | | |
176 | 176 | | |
177 | | - | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
178 | 182 | | |
179 | 183 | | |
180 | 184 | | |
| |||
240 | 244 | | |
241 | 245 | | |
242 | 246 | | |
| 247 | + | |
243 | 248 | | |
244 | 249 | | |
245 | 250 | | |
| |||
365 | 370 | | |
366 | 371 | | |
367 | 372 | | |
| 373 | + | |
368 | 374 | | |
369 | 375 | | |
370 | 376 | | |
| |||
380 | 386 | | |
381 | 387 | | |
382 | 388 | | |
| 389 | + | |
383 | 390 | | |
384 | 391 | | |
385 | 392 | | |
| |||
394 | 401 | | |
395 | 402 | | |
396 | 403 | | |
| 404 | + | |
397 | 405 | | |
398 | 406 | | |
399 | 407 | | |
| |||
408 | 416 | | |
409 | 417 | | |
410 | 418 | | |
| 419 | + | |
411 | 420 | | |
412 | 421 | | |
413 | 422 | | |
| |||
418 | 427 | | |
419 | 428 | | |
420 | 429 | | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
421 | 434 | | |
422 | 435 | | |
423 | 436 | | |
| |||
970 | 983 | | |
971 | 984 | | |
972 | 985 | | |
| 986 | + | |
973 | 987 | | |
974 | 988 | | |
975 | 989 | | |
| |||
985 | 999 | | |
986 | 1000 | | |
987 | 1001 | | |
| 1002 | + | |
988 | 1003 | | |
989 | 1004 | | |
990 | 1005 | | |
| |||
999 | 1014 | | |
1000 | 1015 | | |
1001 | 1016 | | |
| 1017 | + | |
1002 | 1018 | | |
1003 | 1019 | | |
1004 | 1020 | | |
| |||
1013 | 1029 | | |
1014 | 1030 | | |
1015 | 1031 | | |
| 1032 | + | |
1016 | 1033 | | |
1017 | 1034 | | |
1018 | 1035 | | |
| |||
1023 | 1040 | | |
1024 | 1041 | | |
1025 | 1042 | | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
1026 | 1047 | | |
1027 | 1048 | | |
1028 | 1049 | | |
| |||
1593 | 1614 | | |
1594 | 1615 | | |
1595 | 1616 | | |
| 1617 | + | |
1596 | 1618 | | |
1597 | 1619 | | |
1598 | 1620 | | |
| |||
1629 | 1651 | | |
1630 | 1652 | | |
1631 | 1653 | | |
| 1654 | + | |
1632 | 1655 | | |
1633 | 1656 | | |
1634 | 1657 | | |
| |||
1639 | 1662 | | |
1640 | 1663 | | |
1641 | 1664 | | |
| 1665 | + | |
1642 | 1666 | | |
1643 | 1667 | | |
1644 | 1668 | | |
| |||
1758 | 1782 | | |
1759 | 1783 | | |
1760 | 1784 | | |
| 1785 | + | |
1761 | 1786 | | |
1762 | 1787 | | |
1763 | 1788 | | |
1764 | 1789 | | |
1765 | 1790 | | |
1766 | 1791 | | |
| 1792 | + | |
| 1793 | + | |
| 1794 | + | |
| 1795 | + | |
1767 | 1796 | | |
1768 | 1797 | | |
1769 | 1798 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
110 | 110 | | |
111 | 111 | | |
112 | 112 | | |
113 | | - | |
| 113 | + | |
114 | 114 | | |
115 | 115 | | |
116 | 116 | | |
| |||
432 | 432 | | |
433 | 433 | | |
434 | 434 | | |
| 435 | + | |
435 | 436 | | |
436 | 437 | | |
437 | 438 | | |
| |||
513 | 514 | | |
514 | 515 | | |
515 | 516 | | |
| 517 | + | |
| 518 | + | |
516 | 519 | | |
517 | 520 | | |
518 | 521 | | |
| |||
541 | 544 | | |
542 | 545 | | |
543 | 546 | | |
544 | | - | |
545 | | - | |
546 | | - | |
547 | | - | |
548 | | - | |
549 | | - | |
550 | | - | |
551 | | - | |
552 | | - | |
553 | | - | |
554 | | - | |
555 | | - | |
556 | | - | |
557 | | - | |
558 | | - | |
559 | | - | |
560 | 547 | | |
561 | 548 | | |
562 | 549 | | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
563 | 559 | | |
564 | 560 | | |
565 | 561 | | |
| |||
0 commit comments