React-dnd: Corrija las fuentes de arrastre anidadas y cómo funcionan con canDrag

Creado en 27 feb. 2015  ·  4Comentarios  ·  Fuente: react-dnd/react-dnd

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.

bug up for grabs

Comentario más útil

¿Existe una solución para dejar de llamar al padre cuando la función canDrag devuelve false ?

Todos 4 comentarios

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 ?

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

redochka picture redochka  ·  3Comentarios

rubayethossain picture rubayethossain  ·  3Comentarios

bebbi picture bebbi  ·  3Comentarios

dwjohnston picture dwjohnston  ·  3Comentarios

dreamcog picture dreamcog  ·  4Comentarios