Skip to content

Commit 0eeeade

Browse files
committed
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 facebook/react#26596 (comment) and facebook/react#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> DiffTrain build for [1f248bdd7199979b050e4040ceecfe72dd977fd1](facebook/react@1f248bd)
1 parent 4788556 commit 0eeeade

15 files changed

+1584
-1940
lines changed

compiled/facebook-www/REVISION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
c6db19f9cdec34bca3625a483a2f85181193b885
1+
1f248bdd7199979b050e4040ceecfe72dd977fd1

compiled/facebook-www/React-dev.modern.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ if (
2727
}
2828
"use strict";
2929

30-
var ReactVersion = "18.3.0-www-modern-edf301ed";
30+
var ReactVersion = "18.3.0-www-modern-1cb1de96";
3131

3232
// ATTENTION
3333
// When adding new symbols to this file,

compiled/facebook-www/ReactART-dev.classic.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ function _assertThisInitialized(self) {
6969
return self;
7070
}
7171

72-
var ReactVersion = "18.3.0-www-classic-145c42eb";
72+
var ReactVersion = "18.3.0-www-classic-3f9bce70";
7373

7474
var LegacyRoot = 0;
7575
var ConcurrentRoot = 1;

compiled/facebook-www/ReactART-prod.modern.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9637,7 +9637,7 @@ var slice = Array.prototype.slice,
96379637
return null;
96389638
},
96399639
bundleType: 0,
9640-
version: "18.3.0-www-modern-294eaa58",
9640+
version: "18.3.0-www-modern-f1859984",
96419641
rendererPackageName: "react-art"
96429642
};
96439643
var internals$jscomp$inline_1317 = {
@@ -9668,7 +9668,7 @@ var internals$jscomp$inline_1317 = {
96689668
scheduleRoot: null,
96699669
setRefreshHandler: null,
96709670
getCurrentFiber: null,
9671-
reconcilerVersion: "18.3.0-www-modern-294eaa58"
9671+
reconcilerVersion: "18.3.0-www-modern-f1859984"
96729672
};
96739673
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
96749674
var hook$jscomp$inline_1318 = __REACT_DEVTOOLS_GLOBAL_HOOK__;

0 commit comments

Comments
 (0)