Javascript React钩子:useState更新程序函数:为什么这个钩子会在拖动时删除对象?
我在地图上有一个标记,在拖动时使用此功能:Javascript React钩子:useState更新程序函数:为什么这个钩子会在拖动时删除对象?,javascript,react-hooks,context-api,Javascript,React Hooks,Context Api,我在地图上有一个标记,在拖动时使用此功能: function handleOnDragEndUpdateMarker(e) { var markerIndex = e.target.options.marker_index; var markerLatLng = e.target.getLatLng(); //get marker LatLng markerLatLng.id = markerIndex; updateUserMarker(markerLatL
function handleOnDragEndUpdateMarker(e) {
var markerIndex = e.target.options.marker_index;
var markerLatLng = e.target.getLatLng(); //get marker LatLng
markerLatLng.id = markerIndex;
updateUserMarker(markerLatLng, markerIndex);
}
该函数触发另一个函数updateUserMarker
,该函数通过上下文来自组件:
它使用索引,这是一个新对象,包含来自事件的更新lat
和long
,并附加一个同样来自该事件的id
在上下文组件中,我有以下功能:
updateUserMarker: (marker, markerIndex) => {
console.log('marker, markerIndex ', marker, markerIndex);
let updatedMarker = user.markers.map(element =>
element.id == markerIndex ? { ...element, ...marker } : element
)[0];
console.log(
'user.markers[markerIndex] updatedMarker ',
user.markers[markerIndex],
updatedMarker
);
setUser({
...user,
markers: [
{
...user.markers[markerIndex],
...(user.markers[markerIndex] = updatedMarker)
}
]
});
},
它可以很好地处理第一个对象lat和lang,但是在拖动开始后添加第二个对象时,它就会消失
也许几个小时前就应该来这里,但我想尽我最大的努力
提前谢谢你 我不知道您为什么要将[0]
用于更新的Marker
。我假设您要更新id与markerIndex匹配的标记
updateUserMarker:(marker,markerIndex)=>{
让updatedMarkers=user.markers.map(元素=>
element.id==markerIndex?{…element,…marker}:element
);
设置用户({
…用户,
标记:[…更新的标记]
});
}
嘿,谢谢你的评论!哦.map
返回一个数组,所以我只想将对象拉出,例如[{id:xxx,lat:xxx,lng:xxx}]=user.markers.map(…map函数..)[0]
。谢谢!!!!!!!我几个小时前就该这么做了!节日快乐!