Ich benutze React, um Include-Komponente implementiert. Es lädt Inhalt von URL. Dieser Test funktioniert, erzeugt aber auch eine unerwartete Endlosschleife mit render ... warum?Reactjs unerwartete Endlosschleife mit render
<script type="text/jsx">
/** @jsx React.DOM */
var Include = React.createClass({
getInitialState: function() {
return {content: 'loading...'};
},
render: function() {
var url = this.props.src;
$.ajax({
url: url,
success: function(data) {
this.setState({content: data});
}.bind(this)
});
return <div>{this.state.content + new Date().getTime()}</div>;
}
});
var Hello = React.createClass({
render: function() {
return <Include src="hello.txt" />;
}
});
React.renderComponent(
<Hello />,
document.getElementById('hello')
);
</script>
Glad aktualisieren Sie das Problem gearbeitet, um zu sehen! Ein kleiner Vorschlag, den ich empfehlen würde, ist, den Ajax-Aufruf in die componentWillMount-Methode zu verschieben. Das Ergebnis ist das gleiche, aber die componentWillMount-Methode führt zu einer besseren Trennung der Probleme. Ich habe eine Geige beigefügt, damit Sie was ich meine. P. S - React ist genial Hier die ist [jsfiddle] (http://jsfiddle.net/NXCyC/50/) – user3508122
@ user3508122 Ich glaube componentDidMount für diese korrekt ist. Es wird im [offiziellen Tutorial] (http://facebook.github.io/react/docs/tutorial.html) verwendet. Der einzige Grund, den ich mir vorstellen kann, ist, dass componentWillMount aufgerufen wird, wenn 'renderComponentToString' (d. H. Server-Rendering) verwendet wird. – FakeRainBrigand
@FakeRainBrigand - Guter Ort! Du hast Recht - mein Fehler. – user3508122