首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >绑定ReactJs中类或id上的单击事件

绑定ReactJs中类或id上的单击事件
EN

Stack Overflow用户
提问于 2017-12-27 15:52:23
回答 1查看 1.2K关注 0票数 2

我在ReactJ中创建了一些组件。其中包含HTML代码。其中一个组成部分是传单地图。

代码语言:javascript
运行
复制
/**
 * 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代码(此HTML代码是动态生成的,但现在是静态的)

代码语言:javascript
运行
复制
/**
 * 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组件

代码语言:javascript
运行
复制
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);


       }
.
.
.

我想做更多的东西点击元素与类别类。

有了jQuery,我们就会知道

代码语言:javascript
运行
复制
$('.category').click(function () { /* magic */ });

我想知道如何在ReactJs中实现同样的魔法

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-06 22:31:33

经过一番调查,我发现了一些可能有帮助的东西。

https://reactjs.org/docs/integrating-with-other-libraries.html

在这个链接上,您可以找到ReactJs推荐的其他库。

关于像bootstrapleaflet这样的附加库的一般建议是搜索ReactJs优化的库(包含组件),比如react引导、react-传单。或者,如果没有ReactJs,优化的库可能是寻找其他解决方案的时候了。

页面上所有可点击的元素都应该是components,这样才能在书中使用ReactJ并获得它的所有好处。

本主题可能是主题,但有一个解决方案,如何绑定、单击组件并从自身获取数据。

Send data to ReactJs function via component

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47994987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档