2016-05-25 11 views
0

Ich verwende react-dnd. Ich möchte wissen, ob das aktuell verschobene Ziel vor oder nach der gezogenen Quelle in einer geordneten Liste von dnd-dom-Objekten liegt, und dieses an das dom-Objekt als css-Klasse übergeben. Ich möchte Requisiten zwischen Quelle und Ziel für meine eigenen Funktionen vergleichen können.reagieren-dnd: Überprüfen Sie, ob geschleppt Quelle in geordneten Liste vor der nach dem ursprünglichen Platz ist

Wie kann ich benutzerdefinierte Quelle-Ziel-Relation-Funktionen (wie isOver, Candrop, usw.)? Ich möchte eine isBeforeDraggedSource() - Funktion erstellen.

Antwort

0

Anders als Forking die Bibliothek Ich glaube nicht, Sie benutzerdefinierte Beziehungen wie das schaffen können, aber man konnte die collect Funktion ändern Sie Ihre eigene Beziehung zu erstellen. so etwas wie

static collect = (connect, monitor) => { 
    return { 
    isBeforeDraggedSource: <my function>  
    } 
} 

Sie können dann mit monitor.getItem(), vergleichen sie gegen die Requisiten und gehen von dort die zur Zeit gezogene Element erhalten werden könnte. Und wenn Sie die Requisiten des aktuell gezogenen Objekts haben möchten, geben Sie sie einfach als Teil des gezogenen Objekts ein. Umgekehrt könnten Sie getItem einfach durch das Collect geben und dann innerhalb von render verwenden, um seine Requisiten mit den aktuellen Requisiten zu vergleichen.

+0

Danke für das Betrachten. Ich habe das versucht und monitor.getItem() in der Collect-Funktion gibt null zurück, ist das ein Fehler? Ich kann sowieso nicht finden, dass ich sowohl auf Quell- als auch auf Zielrequisiten in der Renderfunktion zugreifen kann. – user1204800

+0

Haben Sie eine beginDrag-Funktion in der DragSource der Sache, die gezogen wird? Dort kannst du einen Gegenstand angeben, den du dann mit dem monitor.getItem bekommen kannst (und wo ich vorgeschlagen habe, dass du den Teil der Requisiten durchläufst, den du magst). Lesen Sie, was hier zur Verfügung gestellt hat: https://gaearon.github.io/react-dnd/docs-drag-source.html und hier: https://gaearon.github.io/react-dnd/docs-drop-target- monitor.html –

+0

Danke, dass Sie mich in die richtige Richtung weisen. Es stellt sich heraus, monitor.getItem() gibt null für mich, aber innerhalb von beginDrag (Requisiten, Monitor, Komponente) component.props hat, was ich gesucht habe. Ich habe dies übersehen, weil das Beispiel nur beginDrag (Requisiten) enthielt. Vielen Dank! – user1204800