Describe el error
Tengo un destino de caída conectado que se elimina del DOM, una vez que se coloca algo sobre él.
Ahora, desde que actualicé a v7.1.0
, obtengo
Uncaught TypeError: Cannot read property '0' of undefined
en la llamada monitor.isOver()
dentro de la función collect
.
De alguna manera, ve que la función de recopilación aún se llama una vez más, después de que se haya eliminado el destino de colocación ( targetId
no está definido).
Interesante
6.0.0
resolvió el problema.setTimeout
alrededor de mi devolución de llamada que eliminó el destino de caída, resolvió el problema.¿Alguna idea de qué podría causar eso?
Reproducir
Pasos para reproducir el comportamiento:
monitor.isOver()
en collect
drop(...)
que elimina el objetivo de caídaComportamiento esperado
No hay ningún problema de tiempo con isOver
y los objetivos de caída se pueden eliminar de inmediato.
Capturas de pantalla
Escritorio (complete la siguiente información):
7.1.0
Mismo problema
Intenté revertir este cambio https://github.com/react-dnd/react-dnd/commit/0feb250b7ee90483e31f3bc159ebf946980d53a7#diff -ac418ba19283aec1fb0b70e6570c5613 y resolví ...
Mismo problema.
Esperando arreglo.
Revuelto a v7.0.2
Confirmado que estamos recibiendo el mismo problema: volver a 7.0.2 soluciona el problema
Esto se debe a que el cambio en 0feb250b7ee90483e31f3bc159ebf946980d53a7 permite que el ID del objetivo sea undefined
pero nadie verificó el PR con ese cambio por isOverTarget
Actualmente su prototipo es:
public isOverTarget(targetId: string, options = { shallow: false })
a diferencia de las otras funciones que cambiaron en ese pr que mueven targetId
/ sourceId
a
targetId: string | undefined
sourceId: string | undefined
y comprobar:
if (!targetId) {
return false;
}
Una solución para este problema será verificar que targetId
sea undefined
aquí: https://github.com/mattkrick/react-dnd/blob/aafcf7d67f8b3a2035b561e97b7874e1064447e4/packages/dnd-core/src /DragDropMonitorImpl.ts#L128
Esto debería ser arreglado por el PR de cfrank en un comunicado de hoy.
Increíble chicos, gracias @cfrank
Comentario más útil
Esto debería ser arreglado por el PR de cfrank en un comunicado de hoy.