2016-12-08 3 views
2

Ich bekomme eine Zeichenfolge aus einer Rest-API, die Komponenten-Tags enthält. Es folgt Beispiel string: -Wie werden Komponenten gerendert, wenn sich die Komponenten-Tags in einer Zeichenfolge befinden?

let stringFromAPI = "Lorem ipsum dolor sit amet, <TooltipComponent>consectetur</TooltipComponent> adipiscing elit. Non enim, <ButtonComponent>si omnia</ButtonComponent> non sequebatur, idcirco non erat ortus illinc. Re mihi non aeque satisfacit, et quidem locis pluribus. Ita relinquet duas, de quibus etiam atque etiam consideret. Ad <TooltipComponent>corpus</TooltipComponent> diceres pertinere-, sed ea, quae dixi, ad corpusne refers?" 

Wenn ich es bin Rendering-Komponenten als Text angezeigt werden statt Rendering. Wie kann ich Komponenten in String gerendert machen?

render() { 
     return (<div>{stringFromAPI}</div> 
    ) 
} 

dangerouslySetInnerHTML = {{__ html: rawMarkup}} rendert nur HTML-Elemente, die nicht Komponenten reagieren.

+1

also sind die Tags in diesem Beispiel: ** consectetur **, ** si omnia ** und ** corpus **? Vielleicht, wenn Sie ein JFiddle vorbereitet haben, wird es einfacher sein, Ihr Problem zu beheben – Kafo

+0

Frage bearbeitet bitte schauen Sie es jetzt. – TOM

+0

Dies ist nicht doppelt Ich versuche, Komponente nicht html mit reactjs – TOM

Antwort

1

Ich nehme an, Sie haben Zugriff auf Backend-Quellcode. In diesem Fall müssen Sie Komponenten zuerst als Zeichenfolge verketten, dann verketten und an das DOM im Frontend anhängen.

Verwenden Sie ReactDOMServer.renderToString, um React-Komponente in Zeichenfolge zu übersetzen. Diese JSFiddle kann Ihnen eine Idee geben.

+0

Hi Ming, Meine statischen Komponenten werden immer gut ersetzt. Aber ich möchte Material-ui-Komponenten verwenden. Die Ereignisse von Material-uis Compnents funktionieren nicht. – TOM

+0

@TOM, 'renderToString' generiert nur HTML, Eventbindung benötigt JS's Hilfe. Sehen Sie sich diese großartige Antwort an: http://StackOverflow.com/a/36234985/2021245. Möglicherweise müssen Sie Ihre Architektur ein wenig ändern, damit Ereignisbindungen auftreten. – Ming

+0

Es wäre eine große Hilfe, wenn Sie ein Beispiel für eine Ereignisbindung, die mir helfen kann, teilen können. – TOM

Verwandte Themen