1 回答

TA贡献1797条经验 获得超4个赞
来自文档1、文档2
Map:顶级组件,实例化 Leaflet 地图并将其提供给其子组件。
所有组件都是 Leaflet 元素和层的 React 包装器,它们需要一个映射实例,因此必须包含在顶级组件中。
LayersControl.Overlay 使用 Overlay 类(doc),并且 Overlay 类内部有以下代码:
class Overlay extends ControlledLayer {
constructor(props: ControlledLayerProps) {
super(props)
this.contextValue = {
...props.leaflet,
layerContainer: {
addLayer: this.addLayer.bind(this),
removeLayer: this.removeLayer.bind(this),
},
}
}
addLayer = (layer: Layer) => {
this.layer = layer // Keep layer reference to handle dynamic changes of props
const { addOverlay, checked, name } = this.props
addOverlay(layer, name, checked)
}
}
在构造函数中addLayer分配了一个方法,该方法是this.addLayer. addOverlay内部this.addLayer正在通过 props 进行解构。此时 props 很可能不包含 addOverlay 方法,因此无法检索,因此会发生错误。
结果,您无法LayersControl.Overlay按照您想要的方式使用。没有这样的例子,我认为这是不可能的,因为地图实例没有按应有的方式提供LayersControl.Overlay
添加回答
举报