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!
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?
Hilfreichster Kommentar
Gibt es eine Lösung, um das Aufrufen von Eltern zu beenden, wenn die Funktion
canDrag
false
zurückgibt?