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

时间:2018-01-03 02:32:31

标签: javascript reactjs leaflet react-leaflet

我试图在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>

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

1 个答案:

答案 0 :(得分:1)

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

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

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