React-dnd: Korrigieren Sie verschachtelte Drag-Quellen und deren Funktionsweise mit canDrag

Erstellt am 27. Feb. 2015  ·  4Kommentare  ·  Quelle: react-dnd/react-dnd

Dies hängt mit # 87 zusammen, ist aber technischer. Derzeit verschachtelte Drag-Quellen werden zusammen aktiviert. Dies ist ein sehr, sehr falsches Verhalten. Die untergeordnete Drag-Quelle sollte immer verhindern, dass die übergeordnete Quelle aktiviert wird.

Aber es ist nicht so einfach, wie es mit dem HTML5-Backend scheint.

Ich habe versucht, e.stopPropagation() zu dragstart Handler hinzuzufügen, aber es gibt noch ein anderes Problem. Angenommen, List und Card sind beide Drag-Quellen, Card liegt innerhalb von List . Angenommen, Card hat canDrag(): false . In diesem Fall können wir stopPropagation() nicht aufrufen, da dies verhindern würde, dass das Ereignis das übergeordnete Ereignis erreicht.

Okay, fügen wir stattdessen if (DragOperationStore.isDragging()) return; zu dragstart Handler hinzu. Aber es gibt noch ein anderes Problem: Obwohl das Ereignis jetzt das übergeordnete Ziel erreicht hat, verwendet der Browser beim Ziehen das ursprüngliche (untergeordnete) Ziel als Drag-Vorschau.

Dies kann wahrscheinlich gelöst werden, indem this.getDOMNode() explizit als dragPreview wenn dies nicht in beginDrag , sodass die Drag-Vorschau garantiert das aktuelle Ziel ist. Ich habe es noch nicht versucht. In jedem Fall scheint dies kein komplexes Problem zu sein und ist zu gewinnen!

bug up for grabs

Hilfreichster Kommentar

Gibt es eine Lösung, um das Aufrufen von Eltern zu beenden, wenn die Funktion canDrag false zurückgibt?

Alle 4 Kommentare

Natürlich brauchen wir einige Einschränkungen für die dragPreview

Wie was?

Behoben in 0.9.2.
Live-Demo: http://gaearon.github.io/react-dnd/#/nesting -sources

Gibt es eine Lösung, um das Aufrufen von Eltern zu beenden, wenn die Funktion canDrag false zurückgibt?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen