【发布时间】:2022-11-25 18:09:45
【问题描述】:
正如标题所暗示的,我有点无法找出这个函数的正确语法。
目前,我在地图上有一个事件侦听器,当单击地图时会触发一个函数,如下所示:
map.on("click",(event)=>addMarker(event,parameter))
这一切都很好,但我想将触发的功能组合成一个完整的功能。我知道可以这样做,这样我就不必在 addMarker 函数之外定义事件。相反,我想在 addMarker 函数中定义事件,这样我只有单击地图后才会触发的单个函数。
以下是我要实现的目标(这是错误的语法):
map.on("click",addMarker(map))
addMarker 函数是:
const addMarker = (event) => (parameter) =>{
new mapboxgl.addMarker({}).setLngLat(coords).addTo(parameter)
}
任何人都可以帮助建议的 addMarker 函数的正确语法吗?当我这样做时,我收到错误“无法读取未定义的属性(阅读:“lng”)”
【问题讨论】:
-
为什么要更改该语法?它是一个函数,它返回一个做某事的函数。你能改变
addMarker函数的定义吗?因为如果你可以,那么你可以用它做任何你想做的事。现在它必须接受返回一个函数的函数。 -
它应该是
(parameter) => (event) =>而不是相反(假设您希望map是parameter并且传递给回调的参数.on()是event(通常是)。另外,请考虑将您的问题标题更新为更易于搜索的内容,以便未来有相同问题的读者可以搜索
标签: javascript reactjs angular es6-modules