Esto está relacionado con el # 87 pero es más técnico. Las fuentes de arrastre anidadas actualmente se activarán juntas. Este es un comportamiento muy, muy incorrecto. La fuente de arrastre del niño debe _siempre_ evitar que el padre se active.
Pero no es tan simple como parece con el backend HTML5.
Intenté agregar e.stopPropagation()
en dragstart
handler, pero hay otro problema. Suponga que List
y Card
son ambas fuentes de arrastre, Card
está dentro de List
. Suponga que Card
tiene canDrag(): false
. No podemos llamar a stopPropagation()
en este caso, porque eso evitaría que el evento llegue al padre.
Bien, en su lugar agreguemos if (DragOperationStore.isDragging()) return;
a dragstart
handler. Pero hay otro problema: aunque el evento ahora ha llegado al padre, si realmente lo arrastra, el navegador usará el objetivo original (hijo) como vista previa de arrastre.
Esto probablemente se pueda resolver usando explícitamente this.getDOMNode()
como dragPreview
si no está especificado en beginDrag
, de modo que se garantiza que la vista previa de arrastre sea el objetivo actual. Aún no lo he probado. De cualquier manera, esto no parece un tema complejo y está en juego.
Ciertamente, necesitamos algunas restricciones en el arrastre.
¿Cómo qué?
Corregido en 0.9.2.
Demostración en vivo: http://gaearon.github.io/react-dnd/#/nesting -sources
¿Existe una solución para dejar de llamar al padre cuando la función canDrag
devuelve false
?
Comentario más útil
¿Existe una solución para dejar de llamar al padre cuando la función
canDrag
devuelvefalse
?