React-Leaflet:未捕获TypeError:pointToLayer不是函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React-Leaflet:未捕获TypeError:pointToLayer不是函数相关的知识,希望对你有一定的参考价值。

我正在尝试在GeoJSON组件中使用pointToLayer参数。我在组件外部定义了函数pointToLayer(不同的文件),我得到了这个错误。

Map.js:

import {pointToLayer} from '../helpers/helper-country-point';
<GeoJSON>
      key={_.uniqueId()}
      data={this.props.activeCountry.geojson}
      pointToLayer={pointToLayer(this)}
 ></GeoJSON>

文件../helpers/helper-country-point是:

import L from 'leaflet';
export function pointToLayer(feature, latlng) {
  return L.circleMarker(latlng, {
    color: 'white',
    fillColor: 'white',
    fillOpacity: .8,
    radius: 3,
    stroke: false
  }).bindPopup("MESSAGE") // Change marker to circle
}

当我在Map.js中定义pointToLayer并使用:

<GeoJSON
 key={_.uniqueId()}
 data= {this.props.countrySelected.geojson}
 pointToLayer={this.pointToLayer.bind(this)}
 ></GeoJSON>

有用。知道为什么我一直收到这个错误吗?

答案

在第一个中,您正在调用该函数并使用this作为参数。

在第二个中,您没有调用该函数。你只是将函数作为道具传递。您可以尝试在第一个示例中删除(this)部分,因此您只能在不调用它的情况下传递函数。

然后,由于错误是pointToLayer不是函数,并且当你在map.js中声明函数时它被解析,我怀疑你可能写了错误的路径到helper.js文件。

以上是关于React-Leaflet:未捕获TypeError:pointToLayer不是函数的主要内容,如果未能解决你的问题,请参考以下文章

安装 react-leaflet 版本 3 后 React Storybook 未运行

React-leaflet 自定义组件 - 未传递上下文?

在 react react-leaflet 中编译失败

React-Leaflet:将地图控制组件放置在地图之外?

React-Leaflet在地图上绘制圆圈标记

React-Leaflet/React-Routing-Machine:删除路线和航路点