React.js: Ist es möglich, zu konvertieren reagieren Komponente zur HTML-DOM?
Arbeite ich an einem map-basierte app, die Google-Karte API zum erstellen von Markierungen und deren info-Fenster in React.js. Die infowindow.setContent()
nur akzeptiert entweder einen String
oder HTML
. Es ist für mich unmöglich zu übergeben String
wie ich eine button
, dass links auf eine bestimmte Methode in einem anderen reagieren Komponente (sowas wie: _this.props.addList(place)
). Also ich muss füllen Sie das argument HTML-DOM als die folgenden Zeilen des Codes:
JS:
var div = document.createElement('div');
var title = document.createElement('h4');
title.innerHTML = place.name;
var btn = document.createElement('button');
btn.className = 'btn btn-danger btn-block';
btn.appendChild(document.createTextNode('I want to go here !!'));
div.appendChild(title).appendChild(btn);
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent( div );
infowindow.open(map, this);
});
btn.addEventListener('click', function() {
_this.props.addList(place);
});
Die codes funktionieren für mich, aber ich will nicht das erstellen von Elementen eins nach dem anderen. Ich habe auch versucht, übergeben Sie das argument mit einem Reagieren Komponente, aber es scheint nicht zu arbeiten:
JS:
createMarker: function() {
/** Some other lines of code */
var _this = this;
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent( _this._renderInfoWindow(place) );
infowindow.open(map, _this);
});
},
//my infowindow rendering method
_renderInfoWindow: function(place) {
return(
<div>
<h4>{place.name}</h4>
<p>{place.cost}</p>
<button className="btn btn-danger btn-block" onClick={this.props.addList.bind(this, place)}>I want to go here !! </button>
</div>
)
},
also gibt es eine andere Möglichkeit zumindest konvertieren reagieren Komponente in HTML, sodass ich nicht schreiben muss document.createElement()
eins nach dem anderen?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie das Rendern einer ReactElement in einem Einfamilienhaus-DOM-Knoten über
Reagieren.render
. So, der folgende code sollte für Sie arbeiten._this
definiert wurde, der höher in der Funktion Körper, es wird zwar Bluten, um den globalen scope.ReactDOM.render
statt, nichtReact.render
.Könnten Sie auch Reagieren die renderToString () - Methode
Diese Arbeit sollte für eine einfache Komponente, wie dargestellt.
Reagieren.renderToString() wird wieder nur der html-Code für die Komponente.
import ReactDOMServer from 'react-dom/server' and
ReactDOMServer.renderToStaticMarkup`Für neuere Versionen Reagieren