大佬教程收集整理的这篇文章主要介绍了ruby-on-rails-4 – 警告:输入是一个void元素标记,不能有`children`或使用`props.dangerouslySetInnerHTML`.检查render方法为null,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#app/assets/javascripts/components/admin.js.coffee @Admin = React.createClass # propTypes: -> # emailVal: React.PropTypes.String.isrequired geTinitialState: -> edit: false errorTexts: [] handleToggle: (E) -> e.preventDefault() @setState edit: !@state.edit @setState errorTexts: [] handledelete: (E) -> e.preventDefault() # yeah... jQuery doesn't have a $.delete shortcut method $.ajax method: 'deletE' url: "/admins/#{ @props.admin.id }" dataType: 'JSON' success: () => @props.handledeleteAdmin @props.admins handleEdit: (E) -> e.preventDefault() data = email: ReactDOm.findDOMNode(@refs.email).value # jQuery doesn't have a $.put shortcut method either $.ajax method: 'PUT' async: false url: "/admins/#{ @props.admin.id }" dataType: 'JSON' data: admin: data error: (data,status,xhr) => errorTexts = [] for key,value of data.responseJSON errorText = "#{key} #{value.toString()}" errorTexts.push errorText @replaceState errorTexts: errorTexts @setState edit: true success: (data,xhr) => @setState edit: false @props.handleEditAdmin @props.admin,data adminRow: -> dom.tr null,dom.td null,@props.admin.email dom.td null,dom.a className: 'btn btn-default' onClick: @handleToggle 'Edit' dom.a className: 'btn btn-danger' onClick: @handledelete 'delete' adminForm: -> dom.tr null,dom.input className: 'form-control' type: 'text' DefaultValue: @props.admin.email ref: 'email' for errorText,index in @state.errorTexts React.createElement AdminError,key: index,errorText: errorText dom.td null,dom.a className: 'btn btn-default' onClick: @handleEdit 'update' dom.a className: 'btn btn-danger' onClick: @handleToggle 'Cancel' render: -> if @state.edit @adminForm() else @adminRow()
相应的AdminError组件是:
#app/assets/javascripts/components/adminerror.js.coffee @AdminError = React.createClass getDefaultProps: -> errorText: "" render: -> dom.div className: 'Help-block' @props.errorText
在调试时,我得到@ props.errorText的正确值为“email is invalid”.但它没有在页面上呈现,我在控制台中发出警告:“警告:输入是一个void元素标记,不能有子节点或使用props.dangerouslySeTinnerHTMl.请检查null的render方法.”
附件是错误和页面的屏幕截图.
我尝试更改AdminError组件,如下所示,但它不起作用:
#app/assets/javascripts/components/adminerror.js.coffee @AdminError = React.createClass getDefaultProps: -> errorText: "" render: -> dom.div className: 'Help-block' dangerouslySeTinnerHTML: __html: marked(@props.errorText.toString(),{saitize: truE})
当我在返回dangerouslySeTinnerHTML的行设置一个调试点时,我正确地将@ props.errorText的值设为“email is invalid”,并将标记的值(@ props.errorText.toString())设置为“email is invalid”.但仍然没有呈现错误的帮助块.
更新:
在AdminError组件中进行了以下更改
应用程序/资产/ Java脚本/组件/ adminerror.js.coffee
@AdminError = React.createClass getDefaultProps: -> # errorText: "" errorTexts: [] render: -> for errorText in @props.errorTexts dom.div className: 'Help-block' errorText
在Admin组件中,对adminform方法进行了以下更改:
if(@state.errorTexts.length>0) dangerouslySeTinnerHTML: { __html: ReactDOMServer.renderToString( # for errorText,index in @state.errorTexts React.createElement AdminError,errorTexts: @state.errorTexts ) }
没有得到警告,而是得到以下错误:
Uncaught Invariant Violation: ReactCompositeComponent.render(): A valid ReactComponent must be returned. You may have returned undefined,an array or some other invalid object.
dom.input可能没有子元素.
dom.td null,dom.input className: 'form-control' type: 'text' DefaultValue: @props.admin.email ref: 'email' # these are being rendered as children of the input: for errorText,index in @state.errorTexts React.createElement AdminError,errorText: errorText
你能在其他地方呈现这些错误消息吗?例如,作为输入的兄弟姐妹:
dom.td null,dom.input className: 'form-control' type: 'text' DefaultValue: @props.admin.email ref: 'email' for errorText,index in @state.errorTexts React.createElement AdminError,errorText: errorText
以上是大佬教程为你收集整理的ruby-on-rails-4 – 警告:输入是一个void元素标记,不能有`children`或使用`props.dangerouslySetInnerHTML`.检查render方法为null全部内容,希望文章能够帮你解决ruby-on-rails-4 – 警告:输入是一个void元素标记,不能有`children`或使用`props.dangerouslySetInnerHTML`.检查render方法为null所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。