Ich möchte React verwenden, um Komponenten im gesamten DOM mehrmals hinzuzufügen. Diese Geige zeigt, was ich tun möchte, und wirft keine Fehler. Hier ist der Code:
HTML:
<div id="container">
<!-- This element's contents will be replaced with the first component. -->
</div>
<div id="second-container">
<!-- This element's contents will be replaced with the second component. -->
</div>
JS:
var Hello = React.createClass({
render: function() {
return <div>Hello {this.props.name}</div>;
}
});
React.render(<Hello name="World" />, document.getElementById('container'));
React.render(<Hello name="Second World" />, document.getElementById('second-container'));
Ich habe diese Frage gesehen und befürchte, dass ich dadurch riskieren werde, dass sich React-Komponenten gegenseitig stören. Die Antwort auf diese Frage schlägt vor, serverseitiges Rendering zu verwenden, was für mich keine Option ist, da ich serverseitiges Django verwende.
Andererseits ist das, was ich mache, vielleicht in Ordnung, weil ich nur eine Instanz der React-Bibliothek gemountet habe (im Gegensatz zu mehreren Komponenten, die ihre eigene React-Instanz aufrufen)?
Ist diese Art der Verwendung mehrerer DOM-Instanzen eine gute Möglichkeit, React zu verwenden?
ReactDOM.render()
gibt, die Komponenten in dieselbe einfügen müssen,div
je nachdem, welche Seite Sie öffnen? Insbesondere habenapp.js
Sie<script src="app.js">
auf jeder Seite nur ein hässliches verkettetes Asset . Und das lädt Bibliotheken wie z. B. jQuery, Bootstrap, React und verfügt über Ihren benutzerdefinierten JS-Code und React Components. Wenn Sie besuchen/foo
, haben SieReactDOM.render(<Foo />, getElemById('content'))
. Wenn Sie/bar', you have
ReactDOM.render (<Bar />, getElemById ('content')) ` besuchen . Sie stören. Wie schaffen Sie das?ReactDOM.render(<Foo/>, document.getElementById('content').appendChild(document.createElement('div')))
Dieser Ansatz ist unter dem Gesichtspunkt der Leistung beim Laden von Seiten in Ordnung, es gibt jedoch auch andere Nachteile, und mehrere React-Wurzeln sollten nach Möglichkeit vermieden werden.
Weitere Raeding - https://github.com/facebook/react/issues/12700
quelle