首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在google-maps-react的单独组件中使用标记

在google-maps-react的单独组件中使用标记
EN

Stack Overflow用户
提问于 2020-11-26 19:05:39
回答 1查看 65关注 0票数 1

我的目标是能够使用一个单独的组件“标记”,它包含地图的所有标记。我计划使用一个纯组件来增强性能。在这样做的时候,我遇到了一些关于标记渲染的问题。

这个问题可以归结为下面的例子。当使用customMarker = true时,标记不显示

代码语言:javascript
复制
import React from "react";
import {Map, Marker, GoogleApiWrapper} from 'google-maps-react';

const MyOwnMarker = (props) => <Marker position={{lat:40, lng:-88}}/>

export class MapContainer extends React.Component {
  
  render = () => {
    const customMarker = true
    return (
      <Map
          google={this.props.google}
          initialCenter={{lat: 40,lng: -88}}
          zoom={15}
        >
          { customMarker ? 
            <MyOwnMarker /> : 
            <Marker position={{lat:40, lng:-88}}/>
          }
      </Map>
    )
  }
}

export default GoogleApiWrapper({
  apiKey: (process.env.REACT_APP_GOOGLE_API_KEY)
})(MapContainer)

期望的结果是,当customMarker = true时,它应该产生与customMarker = false时相同的结果,因为道具是相同的。现在,标记在customMarker = true时不可见。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-26 19:24:23

似乎当你问这个问题的时候--你的大脑会说“实际上,这就是它是如何工作的”。下面是我如何解决这个问题的。这可能会对任何看到这篇文章的人有所帮助。

在google-map-react文档中,他们还传递了道具"map“和"google”。这些都没有被计算在内。因此,添加所有未定义的道具可以让额外的组件工作。

代码语言:javascript
复制
import React from "react";
import {Map, Marker, GoogleApiWrapper} from 'google-maps-react';

const MyOwnMarker = (props) => React.createElement(Marker,{
  position:{lat:40, lng:-88}, 
  ...props
})

export class MapContainer extends React.Component {
  
  render = () => {
    const customMarker = true
    return (
      <Map
          google={this.props.google}
          initialCenter={{lat: 40,lng: -88}}
          zoom={15}
        >
          { customMarker ? 
            <MyOwnMarker /> : 
            <Marker position={{lat:40, lng:-88}}/>
          }
      </Map>
    )
  }
}

export default GoogleApiWrapper({
  apiKey: (process.env.REACT_APP_GOOGLE_API_KEY)
})(MapContainer)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65020810

复制
相关文章

相似问题

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