首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟对React元素的单击

模拟对React元素的单击
EN

Stack Overflow用户
提问于 2017-12-31 12:53:01
回答 1查看 3.8K关注 0票数 4

我使用的反应与传单,并希望启动绘图菜单立即在组件安装,而不让用户点击任何按钮。React传单绘制API对此有点不透明,我想要做的是通过编程方式触发对适当按钮的单击,而不需要用户这样做。然后我就把按钮藏起来。

问题是,无论是使用.click()还是使用MouseEvent('click') API,我都没有任何运气。以下是我对后者的尝试:

代码语言:javascript
复制
import React, { Component } from 'react';
import { connect } from 'react-redux';
import * as actions from '../../../actions';
import { Polygon, FeatureGroup } from 'react-leaflet';
import { EditControl } from 'react-leaflet-draw';

export class DrawNewPlot extends Component {
    componentDidMount() {
        let simulateClick = elem => {
            let evt = new MouseEvent('click', {
                bubbles: true,
                view: window
            });
        };
        let drawControl = document.getElementsByClassName('leaflet-draw-toolbar');
        simulateClick(drawControl);
    }
    render() {
        return (
            <FeatureGroup>
                <EditControl
                    position="bottomright"
                    onEdited={e => {
                        e.layers.eachLayer(a => {
                            this.props.setNewPlotGeojson(a.toGeoJSON());
                        });
                    }}
                    onCreated={e => {
                        this.props.setNewPlotGeojson(e.layer.toGeoJSON());
                    }}
                    draw={{
                        marker: false,
                        circle: false,
                        rectangle: false,
                        polygon: true,
                        polyline: false,
                        circlemarker: false,
                        edit: false
                    }}
                    edit={{ edit: false }}
                />
            </FeatureGroup>
        );
    }
}

function mapStateToProps(state) {
    return {
        addingNewPlotDetails: state.plots.addingNewPlotDetails
    };
}

export default connect(mapStateToProps, actions)(DrawNewPlot);

对我做错了什么有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-31 13:14:55

您的simulateClick方法创建事件,但从不分发它。尝试添加elem.dispatchEvent(evt);

虽然我必须补充,模拟鼠标点击这种方式,只是为了触发一些最初的副作用,感觉不对。我对传单并不熟悉,但如果他们有一些API来设置初始状态,那就值得一查了。

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

https://stackoverflow.com/questions/48042613

复制
相关文章

相似问题

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