2017-11-08 1 views
-1

Ich habe eine React-Komponente, die HTML nur auf einem kleinen Teil eines HTML-Dokuments rendert.DOM-Element außerhalb manipulieren React-Komponente

Innerhalb der React-Komponente muss ich ein Element, das außerhalb der Komponente vorhanden ist, durch einen HTML-Block ersetzen.

Egal, wie viel ich googlen, kann ich keinen geraden Weg finden, dies zu erreichen, ich nehme an, dass es ist, weil React's Richtlinien natürlich vorschreiben, stattdessen ref zu verwenden.

Wie würde ich verwenden document.getElementById() oder ähnliches den folgenden Beispiel-HTML-Block an der Stelle eines bestimmten div einzufügen:

<div> 
    <div class='yellow'>YELLOW</div> 
    <div class='green'>GREEN</div> 
    <div class='blue'>BLUE</div> 
</div> 
+0

referenziert werden Dies sollte innerhalb der Komponente durchgeführt werden oder Sie können Requisiten/Zustand zu den anderen Komponenten passieren zu bestimmen, ob oder nicht um den Block anzuzeigen. Mehr Code (insbesondere die Komponente) könnte hier hilfreich sein. – jmargolisvt

Antwort

0

eine ID an das Element der obersten Ebene der HTML-Weisen reagieren mache. Es wird nach wie vor das id-Attribut enthalten und kann somit nach wie vor mit document.getElementById

<div id="toReplace"> 
    <div className="yellow">YELLOW</div> 
    <div className="blue">blue</div> 
    <div className="red">red</div> 
</div> 

componentDidMount() { //or wherever 
    document.getElementById('toReplace').append('more html'); 
} 
+0

Der HTML-Code wurde als String ausgegeben. Aber du hast mich auf den richtigen Weg gebracht und eine Lösung gefunden, die zu funktionieren scheint (siehe andere Antworten). –

0
const str = "<div><div class='yellow'>YELLOW</div><div class='yellow'>GREEN</div><div class='yellow'>BLUE</div></div>" 
document.getElementById('toReplace').innerHTML = ""; 
document.getElementById('toReplace').insertAdjacentHTML('beforeend', str); 
Verwandte Themen