[react-dom] Keep controlled <select> value on form reset
#35168
+83
−17
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #30580
Closes #34295
React's automatic form reset made it more apparent that controlled select is not working with
form.reset(). Each form associated element has its own reset algorithm.For
<input>, that's reading back thevalueattribute which is why syncing the attribute value is critical for reset.According to the spec,
<select>reads from theselectedattribute (https://html.spec.whatwg.org/multipage/form-elements.html#the-select-element) which is reflected from thedefaultSelectedDOM property. I adjusted the warning for settingselectedvia prop to make it clear why doing that is problematic.Test plan