即使我正确地返回要呈现的组件,但在控制台中出现上述错误。在下面的代码ReactCompositeComponent.render():必须返回有效的ReactComponent。您可能已经返回了未定义的数组或其他无效的对象
if(@state.errorTexts.length>0)
dangerouslySetInnerHTML: {
__html: ReactDOMServer.renderToString(
React.createElement AdminError, errorTexts: @state.errorTexts
)
}
而AdminError部件 价值errorTexts = ["email is invalid"]
包含以下代码段:
#app/assets/javascripts/components/adminerror.js.coffee
@AdminError = React.createClass
getDefaultProps: ->
errorTexts: []
render: ->
for errorText in @props.errorTexts
dom.div
className: 'help-block'
errorText
的JS等效此组件之中的:
(function() {
this.AdminError = React.createClass({
getDefaultProps: function() {
return {
errorTexts: []
};
},
render: function() {
var errorText, i, len, ref, results;
ref = this.props.errorTexts;
results = [];
for (i = 0, len = ref.length; i < len; i++) {
errorText = ref[i];
results.push(dom.div({
className: 'help-block'
}, errorText));
}
return results;
}
});
}).call(this);
值从AdminError组件返回的结果显示在下面的屏幕截图中,但是,我不确定返回的对象的类型是上可接受的或不因为它是内部的for循环:
UPDATE: 修改了代码中AdminError组件来解决这个error
#app/assets/javascripts/components/adminerror.js.coffee
@AdminError = React.createClass
getDefaultProps: ->
errorTexts: []
render: ->
dangerouslySetInnerHTML: {
__html: marked((
dom.div null,
for errorText, index in @props.errorTexts
dom.div
key: index
className: 'help-block'
errorText
).toString())
}
并再次得到这个错误:
Uncaught Invariant Violation: ReactCompositeComponent.render(): A valid ReactComponent must be returned. You may have returned undefined, an array or some other invalid object.invariant
工作正常,但现在在父组件中还有其他一些工作, ( – vipin8169
)我刚刚修复了这两个错误,现在他们再次出现了。警告:输入是一个无效的元素标记,不得有子元素或使用props.dangerouslySetInnerHTML.warning' '未捕获的不变违规:对象无效作为一个React子元素(发现:包含键的对象{dangerouslySetInnerHTML})。如果你想渲染一个子集合,可以使用一个数组,或者使用React附加组件中的createFragment(object)来包装对象。 – vipin8169