如何将“可拖动”的隐藏属性传递给我的组件?

时间:2019-04-25 07:51:44

标签: javascript reactjs typescript here-api

我有一个工作正常的此处地图,现在我正在尝试向地图添加可拖动标记

注意:我正在使用公司制造的包装/模块。这是Here api的React友好包,特别是mapsjs-core.js和mapsjs-service.js。这使我可以渲染一个<PlainMap/>组件,在那里我可以传递诸如宽度和高度之类的道具来渲染地图。作为此<PlainMap>的子组件,我可以传递类似<Marker><Polygon>之类的东西。

现在<Marker>拥有这些道具

position: H.geo.IPoint | H.geo.IPoint[];
icon?: React.ReactElement<any>;
eventListenerMap?: {};

我指的是documentation中的这个官方方法示例。但是我没有任何道具或标志可以传递给<Marker>使其可拖动(请参见上面链接的第28行)。

所有事件(例如轻击,指针进入,指针离开)对我来说都很好用,但拖动不起作用,因为(至少我认为如此)我必须使标记可拖动。 event-types

我很想将此可拖动对象传递给我的标记,但是我只是不知道该怎么做。

是否有可能以某种方式完成此任务?

也许要包装这个`组件并添加一个新属性,例如“ draggable”,然后在使用该组件时将其设置为true?像这样:

<Marker 
   key={index} 
   position={point} 
   eventListenerMap={this.markerEventHandlers}
   draggable={true}
/>

1 个答案:

答案 0 :(得分:1)

由于<Marker>是贵公司的私有/自定义React组件,包裹在这里的Marker JS类/实例中,因此您必须向该组件添加draggable道具(就像您所做的那样) ),然后更新组件的实现,以设置HERE的Marker实例的可拖动属性,如下所示:marker.draggable = this.props.draggable