Ich habe eine Komponente in ReactJs erstellt. Welche enthält HTML-Code. Eine Komponente ist die Flugblattkarte.Bind Click Event auf Klasse oder ID in ReactJs
/**
* Draws zones control container.
*
* @param map
*
* @return void
*/
addZoneControl = (map) => {
let categories = this.generateZoneCategories();
let control = L.Control.extend({
options: {
position: 'topleft'
},
onAdd: function (map) {
let container = L.DomUtil.create('div', 'leaflet-bar leaflet-control leaflet-control-custom');
container.style.backgroundColor = 'white';
container.innerHTML = categories;
container.id = 'categoriesContainer';
container.onclick = function(){
alert('buttonClicked');
};
return container;
}
});
map.addControl(new control());
};
HTML-Code, der in der Karte Kontrolle importiert wurde
/**
* Generates HTML code from JSON data
*
* @return {string}
*/
generateZoneCategories =() => {
return '<div class="col-xs-12 col-md-3" id="categories">' +
'<p class="text-uppercase" id="filter">Ansicht Filtern</p>' +
'<p class="category purple">1. Kategorie <span>CHF 78.00</span></p>' +
'<p class="category orange">2. Kategorie <span>CHF 68.00</span></p>' +
'<p class="category green">3. Kategorie <span>CHF 58.00</span></p>' +
'<p class="category blue">4. Kategorie <span>CHF 48.00</span></p>' +
'</div>'
};
ReactJs Komponente
import React from 'react';
import ReactDOM from 'react-dom';
import L from 'leaflet';
import 'leaflet/dist/leaflet.css'
import './style.css';
import {childrenType, GridLayer} from 'react-leaflet'
class SeatMap extends React.Component {
componentDidMount() {
let map = this.map = L.map(ReactDOM.findDOMNode(this), {
minZoom: -3,
maxZoom: 3,
crs: L.CRS.Simple,
zoomsliderControl: false,
zoomControl: false,
attributionControl: false,
doubleClickZoom: false,
});
this.addZoneControl(map);
map.fitWorld();
/* Here I want to bind click event on category class */
console.log(ReactDOM.findDOMNode('.category').length);
}
.
.
.
I (aber jetzt dynamisch generiert werden diese HTML-Code wird beispielsweise statisch geschrieben) gesucht um mehr Sachen zu machen, wenn man auf ein Element mit der Kategorie class klickt.
Mit jQuery wissen wir, dass es so etwas wie
$('.category').click(function() { /* magic */ });
Ich frage mich sein, wie in ReactJs gleiche Magie zu tun?
Durch all das HTML Rückkehr profitieren Sie nicht von der Macht der React. Wenn Sie diesen HTML-Code in Komponenten aufgeteilt haben, können Sie Listener an die von Ihnen gewünschte Stelle binden. – Andy