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

Schreibe einen Kommentar