I am getting the above error in the console, even though I'm correctly returning the Component to be rendered.
Value of errorTexts = ["email is invalid"]
in the following code
if(@state.errorTexts.length>0)
dangerouslySetInnerHTML: {
__html: ReactDOMServer.renderToString(
React.createElement AdminError, errorTexts: @state.errorTexts
)
}
And the AdminError component contains the following piece of code:
#app/assets/javascripts/components/adminerror.js.coffee
@AdminError = React.createClass
getDefaultProps: ->
errorTexts: []
render: ->
for errorText in @props.errorTexts
dom.div
className: 'help-block'
errorText
The JS equivalent of this component being:
(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);
The value of result returned from the AdminError component is show in the screenshot below, however, I am not sure if the type of object returned is acceptable or not as it is inside the for loop:
UPDATE: modified the code in AdminError component to fix this 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())
}
and again got this error:
Uncaught Invariant Violation: ReactCompositeComponent.render(): A valid ReactComponent must be returned. You may have returned undefined, an array or some other invalid object.invariant
render
method cannot return multiple elements, it must return only one. So wrap the list in another DOM element:
render: ->
dom.div null,
for errorText in @props.errorTexts
dom.div
className: 'help-block'
errorText