Ich baue etwas mit React, wo ich HTML mit React Variables in JSX einfügen muss. Gibt es eine Möglichkeit, eine Variable wie diese zu haben:
var thisIsMyCopy = '<p>copy copy copy <strong>strong copy</strong></p>';
und es einzufügen, um so zu reagieren, und hat es funktionieren?
render: function() {
return (
<div className="content">{thisIsMyCopy}</div>
);
}
und muss es den HTML wie erwartet einfügen? Ich habe nichts über eine Reaktionsfunktion gesehen oder gehört, die dies inline ausführen könnte, oder über eine Methode zum Parsen von Dingen, die dies ermöglichen würden.
<head>
?Beachten Sie, dass
dangerouslySetInnerHTML
dies gefährlich sein kann, wenn Sie nicht wissen, was in der HTML-Zeichenfolge enthalten ist, die Sie einfügen. Dies liegt daran, dass bösartiger clientseitiger Code über Skript-Tags eingefügt werden kann.Es ist wahrscheinlich eine gute Idee, die HTML-Zeichenfolge über ein Dienstprogramm wie DOMPurify zu bereinigen, wenn Sie nicht 100% sicher sind, dass der von Ihnen gerenderte HTML- Code XSS-sicher (Cross-Site Scripting) ist.
Beispiel:
quelle
import DOMPurify from 'dompurify' const thisIsMyCopy = '<Alert severity="warning">copy copy copy <strong>strong copy</strong></Alert >'; render: function() { return ( <div className="content" dangerouslySetInnerHTML={{__html: DOMPurify.sanitize(thisIsMyCopy)}}></div> ); }
gefährlichSetInnerHTML hat viele Nachteile, weil es innerhalb des Tags gesetzt wird.
Ich schlage vor, dass Sie einen React Wrapper verwenden, wie ich ihn hier auf npm für diesen Zweck gefunden habe. Der HTML-React-Parser erledigt den gleichen Job.
Sehr einfach :)
quelle
Mit verwenden
''
Sie es zu String. Verwenden Sie ohne Anführungszeichen funktioniert es gut.quelle
Um Linterfehler zu vermeiden, verwende ich es folgendermaßen:
quelle
Wenn Sie '' verwenden, wird der Wert auf eine Zeichenfolge gesetzt, und React kann nicht erkennen, dass es sich um ein HTML-Element handelt. Sie können Folgendes tun, um React wissen zu lassen, dass es sich um ein HTML-Element handelt:
''
und es würde funktionieren<Fragment>
diese Option , um ein HTML-Element zurückzugeben.quelle
thisIsMyCopy
ist selbst JSX, keine HTML-Zeichenfolge. Sie fügen JSX also buchstäblich in JSX ein.Wenn noch jemand hier landet. Mit ES6 können Sie Ihre HTML-Variable folgendermaßen erstellen:
quelle
{}
und die gesamte Zeichenfolge in ein Markup wie dieses(<span>{telephoneNumber} <br /> {email}</span>)
<p>copy copy copy <strong>strong copy</strong></p>
ist eine Zeichenfolge. Sie haben es als JSX.Sie können diesen HTML-Code auch wie folgt in ReactDOM aufnehmen:
Hier sind zwei Links Link und Link2 aus der React-Dokumentation, die hilfreich sein könnten.
quelle