我正在尝试使用创建一个内嵌的广播/文本/输入表单ReactDOM然而,对于React 15,打开浏览器时出现错误:
Uncaught Invariant Violation: input is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.
引发此错误的代码如下
const D = ReactDOM; //react-dom-factories
D.input({
type: 'radio',
className: 'stra-on-loss-return-to-base-radio',
value: 'return_to_base',
disabled: this.state.active
}, D.span(null, 'Return to base bet'), D.br()),
D.input({
type: 'radio',
className: 'stra-on-loss-increase-bet-by',
value: 'increase_bet_by',
disabled: this.state.active
}, D.span(null, 'Increase bet by: '), D.input({
type: 'text',
ref: 'onLossQty',
onChange: this.updateOnLossQty,
value: this.state.onLossIncreaseQty,
disabled: this.state.active || this.state.onLossSelectedOpt !== 'increase_bet_by' }
), D.span(null, 'x'))
https://www.npmjs.com/package/react-dom-factories反应堆有问题吗https://pastebin.com/51x23vZy是整个文件的副本
这个错误是说你不能把东西放在input元素。你错过了D.span和D.br的争论,换句话说,你正试图呈现这个(你例子的前半部分):
<input type="radio">
<span>
Return to base bet
</span>
<br />
</input>
HTML不允许怎么样去要,所以react告诉你这是一个错误。所以你需要把input,span,和br放在div内
D.div(
null,
D.input({
type: 'radio',
...
}),
D.span(null, 'Return to base bet'),
D.br()
)
相应的超文本标记语言看起来像
<div>
<input type="radio" />
<span>
Return to base bet
</span>
<br />
</div>
或者如果你不想要div或是span,你可以做一个React.Fragment
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。