在此示例中,您会看到一个简单的React元素(<input>
),除了type
和id
之外没有任何属性,它会被渲染为根元素({{1使用react-dom。由于某种原因,defaultValue和value都在实际DOM元素上使用'on'初始化。为什么会这样?这是我应该报告的错误吗?
<div id=root>
修改
在第一次编辑问题时,我假设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)
)
的{{1}}属性也应为空;这不是真的,如果没有另外设置,它实际上必须返回'on':https://html.spec.whatwg.org/#dom-input-value-default-on
答案 0 :(得分:2)
这不是React本身的问题。这是默认情况下浏览器的行为方式。
来自MDN:
如果省略value属性,则为复选框的默认值 是的。
有关复选框元素的完整信息: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox
答案 1 :(得分:0)
事实证明它实际上是a bug,这应该在2018年早期的React版本中修复。