Skip to content

Commit b9ccffa

Browse files
committed
Add explanation of loose type checks in value assignment.
1 parent 7c3e4b7 commit b9ccffa

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -199,8 +199,9 @@ var ReactDOMInput = {
199199
var node = ReactDOMComponentTree.getNodeFromInstance(inst);
200200
var value = LinkedValueUtils.getValue(props);
201201
if (value != null) {
202-
// To avoid side effects (such as losing text selection), only set value if changed
203-
if (value != node.value) {
202+
// Use loose coercion to prevent replacement on comparisons like
203+
// '3e1' == 30 in Chrome (~52).
204+
if (value != node.value) { // eslint-disable-line
204205
// Cast `value` to a string to ensure the value is set correctly. While
205206
// browsers typically do this as necessary, jsdom doesn't.
206207
node.value = '' + value;

src/renderers/dom/shared/DOMPropertyOperations.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,9 @@ var DOMPropertyOperations = {
159159
(propertyInfo.hasOverloadedBooleanValue && value === true)) {
160160
node.setAttribute(attributeName, '');
161161
} else if (attributeName === 'value' && node.hasAttribute('value')) {
162-
if (node.value != value) {
162+
// Use loose coercion to prevent replacement on comparisons like
163+
// '3e1' == 30 in Chrome (~52).
164+
if (node.value != value) { // eslint-disable-line
163165
node.setAttribute(attributeName, '' + value);
164166
}
165167
} else {

0 commit comments

Comments
 (0)