作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,当我单击标记时, map 总是刷新,我该如何防止它发生?单击标记时将呈现有关该标记的特定信息,但它始终会重新加载并返回到其默认中心。
import React, { Component } from "react";
import { withGoogleMap, GoogleMap, Marker } from "react-google-maps";
import maplayout from "./mapstyle.js";
class Map extends Component {
state = { users: []};
onClick = (data) => {
this.props.onClick(data);
};
render() {
const GoogleMapExample = withGoogleMap(props => (
<GoogleMap
defaultCenter={{ lat: 47.507589, lng: 19.066128 }}
defaultZoom={13}
>
{this.props.users.map((element, index) => (
<Marker
key = {index}
icon={require("../assets/seenpinkek.svg")}
position={{ lat: element.latitude, lng: element.longitude }}
onClick={() => this.onClick(index)}
/>
))}
</GoogleMap>
));
return (
<div>
<GoogleMapExample
containerElement={<div className="mapCont" />}
mapElement={<div className="map" />}
disableDefaultUI={true}
isMarkerShown
onClick={this.onClick}>
</GoogleMapExample>
</div>
);
}
}
export default Map;
最佳答案
这是预期的行为,因为父组件状态正在更新。为了防止你的 map 组件重新渲染,你可以让 React 知道(通过 shouldComponentUpdate
方法)组件是否应该受到状态或 props 变化的影响:
shouldComponentUpdate(nextProps) {
// If shouldComponentUpdate returns false,
// then render() will be completely skipped until the next state change.
// In addition, componentWillUpdate and componentDidUpdate will not be called.
return false;
}
或(允许在数据实际更改时进行更新):
shouldComponentUpdate(nextProps,nextState) {
return (this.state.users !== nextState.users);
}
已报告类似问题的解决方案 here
关于reactjs - 每次我点击标记时,我的谷歌地图都会刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51967477/
leaflet:一个开源并且对移动端友好的交互式地图 JavaScript 库 中文文档: https://leafletjs.cn/reference.html 官网(英文): ht
我是一名优秀的程序员,十分优秀!