Commit 5d9139b
Switching checked to null should leave the current value (#26667)
I accidentally made a behavior change in the refactor. It turns out that
when switching off `checked` to an uncontrolled component, we used to
revert to the concept of "initialChecked" which used to be stored on
state.
When there's a diff to this computed prop and the value of props.checked
is null, then we end up in a case where it sets `checked` to
`initialChecked`:
https://github.com/facebook/react/blob/5cbe6258bc436b1683080a6d978c27849f1d9a22/packages/react-dom-bindings/src/client/ReactDOMInput.js#L69
Since we never changed `initialChecked` and it's not relevant if
non-null `checked` changes value, the only way this "change" could
trigger was if we move from having `checked` to having null.
This wasn't really consistent with how `value` works, where we instead
leave the current value in place regardless. So this is a "bug fix" that
changes `checked` to be consistent with `value` and just leave the
current value in place. This case should already have a warning in it
regardless since it's going from controlled to uncontrolled.
Related to that, there was also another issue observed in
#26596 (comment) and
#26588
We need to atomically apply mutations on radio buttons. I fixed this by
setting the name to empty before doing mutations to value/checked/type
in updateInput, and then set the name to whatever it should be. Setting
the name is what ends up atomically applying the changes.
---------
Co-authored-by: Sophie Alpert <git@sophiebits.com>1 parent e0a89a1 commit 5d9139b
File tree
5 files changed
+169
-140
lines changed- packages
- react-dom-bindings/src/client
- react-dom/src
- __tests__
- events/plugins/__tests__
5 files changed
+169
-140
lines changedLines changed: 14 additions & 112 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
834 | 834 | | |
835 | 835 | | |
836 | 836 | | |
| 837 | + | |
837 | 838 | | |
838 | 839 | | |
839 | 840 | | |
| |||
848 | 849 | | |
849 | 850 | | |
850 | 851 | | |
| 852 | + | |
| 853 | + | |
| 854 | + | |
| 855 | + | |
851 | 856 | | |
852 | | - | |
853 | | - | |
854 | | - | |
855 | | - | |
856 | | - | |
857 | | - | |
858 | | - | |
859 | | - | |
860 | | - | |
861 | | - | |
862 | | - | |
863 | | - | |
864 | | - | |
| 857 | + | |
865 | 858 | | |
866 | 859 | | |
867 | 860 | | |
868 | 861 | | |
869 | | - | |
870 | | - | |
871 | | - | |
872 | | - | |
873 | | - | |
874 | | - | |
875 | | - | |
876 | 862 | | |
877 | 863 | | |
878 | 864 | | |
| |||
904 | 890 | | |
905 | 891 | | |
906 | 892 | | |
907 | | - | |
908 | 893 | | |
909 | 894 | | |
910 | 895 | | |
| |||
913 | 898 | | |
914 | 899 | | |
915 | 900 | | |
| 901 | + | |
916 | 902 | | |
917 | 903 | | |
| 904 | + | |
918 | 905 | | |
919 | 906 | | |
920 | 907 | | |
| |||
1010 | 997 | | |
1011 | 998 | | |
1012 | 999 | | |
1013 | | - | |
1014 | 1000 | | |
1015 | 1001 | | |
| 1002 | + | |
1016 | 1003 | | |
1017 | 1004 | | |
1018 | 1005 | | |
| |||
1305 | 1292 | | |
1306 | 1293 | | |
1307 | 1294 | | |
1308 | | - | |
1309 | | - | |
1310 | | - | |
1311 | | - | |
1312 | | - | |
1313 | | - | |
1314 | | - | |
1315 | | - | |
1316 | 1295 | | |
1317 | 1296 | | |
1318 | 1297 | | |
| |||
1341 | 1320 | | |
1342 | 1321 | | |
1343 | 1322 | | |
1344 | | - | |
1345 | | - | |
1346 | | - | |
1347 | | - | |
1348 | | - | |
1349 | | - | |
1350 | | - | |
1351 | | - | |
1352 | | - | |
1353 | | - | |
1354 | | - | |
1355 | | - | |
1356 | | - | |
1357 | | - | |
1358 | | - | |
1359 | | - | |
1360 | 1323 | | |
1361 | 1324 | | |
1362 | 1325 | | |
| |||
1365 | 1328 | | |
1366 | 1329 | | |
1367 | 1330 | | |
1368 | | - | |
1369 | | - | |
1370 | | - | |
1371 | | - | |
1372 | | - | |
1373 | | - | |
1374 | | - | |
1375 | | - | |
1376 | | - | |
1377 | 1331 | | |
1378 | 1332 | | |
1379 | 1333 | | |
| |||
1453 | 1407 | | |
1454 | 1408 | | |
1455 | 1409 | | |
1456 | | - | |
1457 | | - | |
1458 | | - | |
1459 | | - | |
1460 | | - | |
1461 | | - | |
1462 | | - | |
1463 | | - | |
1464 | | - | |
1465 | | - | |
1466 | | - | |
1467 | | - | |
1468 | | - | |
1469 | | - | |
1470 | | - | |
1471 | | - | |
1472 | | - | |
1473 | 1410 | | |
1474 | 1411 | | |
1475 | 1412 | | |
| |||
1481 | 1418 | | |
1482 | 1419 | | |
1483 | 1420 | | |
| 1421 | + | |
1484 | 1422 | | |
1485 | 1423 | | |
1486 | 1424 | | |
| |||
1822 | 1760 | | |
1823 | 1761 | | |
1824 | 1762 | | |
1825 | | - | |
1826 | | - | |
1827 | | - | |
1828 | | - | |
1829 | | - | |
1830 | | - | |
1831 | | - | |
1832 | | - | |
1833 | | - | |
1834 | | - | |
1835 | | - | |
1836 | | - | |
1837 | | - | |
1838 | | - | |
1839 | 1763 | | |
1840 | 1764 | | |
1841 | 1765 | | |
1842 | 1766 | | |
1843 | 1767 | | |
1844 | 1768 | | |
1845 | | - | |
1846 | | - | |
1847 | | - | |
1848 | | - | |
1849 | | - | |
1850 | | - | |
1851 | | - | |
1852 | 1769 | | |
1853 | 1770 | | |
1854 | 1771 | | |
| |||
1916 | 1833 | | |
1917 | 1834 | | |
1918 | 1835 | | |
1919 | | - | |
1920 | | - | |
1921 | | - | |
1922 | | - | |
1923 | | - | |
1924 | | - | |
1925 | | - | |
1926 | | - | |
1927 | | - | |
1928 | | - | |
1929 | | - | |
1930 | | - | |
1931 | | - | |
1932 | | - | |
1933 | | - | |
1934 | | - | |
1935 | | - | |
1936 | 1836 | | |
1937 | 1837 | | |
1938 | 1838 | | |
| |||
1944 | 1844 | | |
1945 | 1845 | | |
1946 | 1846 | | |
| 1847 | + | |
1947 | 1848 | | |
1948 | 1849 | | |
1949 | 1850 | | |
| |||
2970 | 2871 | | |
2971 | 2872 | | |
2972 | 2873 | | |
2973 | | - | |
2974 | 2874 | | |
2975 | 2875 | | |
2976 | 2876 | | |
| |||
2984 | 2884 | | |
2985 | 2885 | | |
2986 | 2886 | | |
| 2887 | + | |
2987 | 2888 | | |
2988 | 2889 | | |
| 2890 | + | |
2989 | 2891 | | |
2990 | 2892 | | |
2991 | 2893 | | |
| |||
3008 | 2910 | | |
3009 | 2911 | | |
3010 | 2912 | | |
3011 | | - | |
3012 | 2913 | | |
3013 | 2914 | | |
| 2915 | + | |
3014 | 2916 | | |
3015 | 2917 | | |
3016 | 2918 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
89 | 89 | | |
90 | 90 | | |
91 | 91 | | |
| 92 | + | |
92 | 93 | | |
93 | 94 | | |
94 | 95 | | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
95 | 116 | | |
96 | 117 | | |
97 | 118 | | |
| |||
157 | 178 | | |
158 | 179 | | |
159 | 180 | | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
160 | 195 | | |
161 | 196 | | |
162 | 197 | | |
| |||
166 | 201 | | |
167 | 202 | | |
168 | 203 | | |
| 204 | + | |
169 | 205 | | |
170 | 206 | | |
171 | 207 | | |
172 | 208 | | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
173 | 221 | | |
174 | 222 | | |
175 | 223 | | |
| |||
235 | 283 | | |
236 | 284 | | |
237 | 285 | | |
238 | | - | |
239 | | - | |
240 | | - | |
241 | | - | |
242 | 286 | | |
243 | 287 | | |
244 | 288 | | |
| |||
276 | 320 | | |
277 | 321 | | |
278 | 322 | | |
279 | | - | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
280 | 333 | | |
281 | 334 | | |
282 | 335 | | |
| |||
291 | 344 | | |
292 | 345 | | |
293 | 346 | | |
| 347 | + | |
294 | 348 | | |
295 | 349 | | |
296 | 350 | | |
| |||
347 | 401 | | |
348 | 402 | | |
349 | 403 | | |
| 404 | + | |
350 | 405 | | |
351 | 406 | | |
352 | 407 | | |
| |||
0 commit comments