3
リーフレットを使用しています。ユーザーがボタンをクリックすることなく、コンポーネントのマウント時にすぐに描画メニューを起動します。 React Leaflet Draw APIは少し不透明ですが、これを簡単にするために私がしたいのは、ユーザーがいなくても、プログラム上で適切なボタンをクリックすることです。私はボタンを隠すでしょう。リアクションエレメントのクリックをシミュレートする
問題は、私が.click()またはMouseEvent( 'クリック')APIを使用しても不運ではないということです。後者での私の試みは次のとおりです。
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);
私が間違っていることは何ですか?
いいえ、この方法では動作しません。 –
上記のコードで気付いたもう一つの問題は、getElementsByClassNameは配列を返します。単一の要素ではなく、ログアウトしてそのクラス名が1つの要素と一致するかどうかを確認し、そうであれば最後に[0] .getElementsByClassName( 'リーフレット描画ツールバー')[0]; – luanped