【发布时间】:2018-01-09 16:14:30
【问题描述】:
在这个例子中,你看到一个简单的 React 元素(<input>),它除了 type 和 id 之外没有任何属性,它使用 react-dom 渲染为根元素(<div id=root>)。由于某种原因,defaultValue 和 value 在实际 DOM 元素上都被初始化为“on”。为什么会这样?这是我应该报告的错误吗?
const React = require('react');
const ReactDOM = require('react-dom');
const checkboxNoValue = React.createElement('input', {
type: 'checkbox',
'id': 'checkboxElement'
});
ReactDOM.render(checkboxNoValue, root);
console.assert(
checkboxElement.value === 'on',
'value should return "on" by HTML spec, instead got: '
+ JSON.stringify(checkboxElement.value)
) // this works fine
console.assert(
checkboxElement.getAttribute('value') === null,
'value attribute should be empty, instead got: '
+ JSON.stringify(checkboxElement.getAttribute('value'))
)
console.assert(
checkboxElement.defaultValue === '',
'defaultValue should be empty, instead got: '
+ JSON.stringify(checkboxElement.defaultValue)
)
编辑
在第一次编辑问题时,我假设HTMLInputElement 的.value 属性也应该为空;这不是真的,如果没有设置,它实际上必须返回'on':https://html.spec.whatwg.org/#dom-input-value-default-on
【问题讨论】:
-
我猜这样它可以适当地序列化它。
标签: javascript reactjs dom