Skip to content

Commit 7c3e4b7

Browse files
committed
Use coercion to be smart about value assignment
1 parent 91ac99e commit 7c3e4b7

File tree

2 files changed

+6
-9
lines changed

2 files changed

+6
-9
lines changed

src/renderers/dom/client/wrappers/ReactDOMInput.js

+4-7
Original file line numberDiff line numberDiff line change
@@ -199,14 +199,11 @@ var ReactDOMInput = {
199199
var node = ReactDOMComponentTree.getNodeFromInstance(inst);
200200
var value = LinkedValueUtils.getValue(props);
201201
if (value != null) {
202-
203-
// Cast `value` to a string to ensure the value is set correctly. While
204-
// browsers typically do this as necessary, jsdom doesn't.
205-
var newValue = '' + value;
206-
207202
// To avoid side effects (such as losing text selection), only set value if changed
208-
if (newValue !== node.value) {
209-
node.value = newValue;
203+
if (value != node.value) {
204+
// Cast `value` to a string to ensure the value is set correctly. While
205+
// browsers typically do this as necessary, jsdom doesn't.
206+
node.value = '' + value;
210207
}
211208
} else {
212209
if (props.value == null && props.defaultValue != null) {

src/renderers/dom/shared/DOMPropertyOperations.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,8 @@ var DOMPropertyOperations = {
158158
} else if (propertyInfo.hasBooleanValue ||
159159
(propertyInfo.hasOverloadedBooleanValue && value === true)) {
160160
node.setAttribute(attributeName, '');
161-
} else if (attributeName === 'value') {
162-
if (node.value !== value) {
161+
} else if (attributeName === 'value' && node.hasAttribute('value')) {
162+
if (node.value != value) {
163163
node.setAttribute(attributeName, '' + value);
164164
}
165165
} else {

0 commit comments

Comments
 (0)