Eine schöne, portable Drag-and-Drop-Listenbibliothek für React.js. Weitere Informationen zu den Funktionen von react-beautiful-dnd und den entsprechenden Benutzern finden Sie in der offiziellen Dokumentation und in der chinesischen Übersetzungsdokumentation. npm: https://www.npmjs.com/package/react-beautiful-dnd 1. Installation Es ist so einfach, den folgenden Befehl in einem bestehenden React-Projekt auszuführen. # Garn Garn hinzufügen reagieren-schön-dnd # npm npm installiere react-beautiful-dnd --save 2.APIWeitere Einzelheiten finden Sie in der offiziellen Dokumentation. 3. Reagiere-schön-dnd-Demo3.1 Demo1 Vertikales Ziehen von KomponentenDie Wirkung ist wie folgt: demo1.gif Implementierungscode: importiere React, {Komponente} von „react“; importiere { DragDropContext, Droppable, Draggable } aus „react-beautiful-dnd“; //Daten initialisieren const getItems = count => Array.from({ Länge: Anzahl }, (v, k) => k).map(k => ({ ID: `item-${k + 1}`, Inhalt: `Dies ist Inhalt ${k + 1}` })); // Array-Reihenfolge neu aufzeichnen const reorder = (list, startIndex, endIndex) => { const Ergebnis = Array.from(Liste); const [entfernt] = result.splice(startIndex, 1); result.splice(endIndex, 0, entfernt); Ergebnis zurückgeben; }; konstantes Raster = 8; // Stil festlegen const getItemStyle = (isDragging, draggableStyle) => ({ // einige grundlegende Stile, um die Elemente ein bisschen schöner aussehen zu lassen Benutzerauswahl: "keine", Polsterung: Gitter * 2, Rand: `0 0 ${grid}px 0`, // Hintergrund ändert sich beim Ziehen background: isDragging ? "lightgreen" : "#ffffff", // Stile, die wir auf Draggables anwenden müssen … ziehbarer Stil }); const getListStyle = () => ({ Hintergrund: 'schwarz', Polsterung: Gitter, Breite: 250 }); exportiere Standardklasse ReactBeautifulDnd erweitert Komponente { Konstruktor(Requisiten) { super(Requisiten); dieser.Zustand = { Artikel: getItems(11) }; dies.onDragEnd = dies.onDragEnd.bind(dies); } onDragEnd(Ergebnis) { wenn (!Ergebnis.Ziel) { zurückkehren; } const items = neu anordnen( dieser.Status.Artikel, Ergebnis.Quelle.Index, Ergebnis.Ziel.Index ); dies.setState({ Artikel }); } rendern() { zurückkehren ( <DragDropContext onDragEnd={this.onDragEnd}> <Mitte> <Abwerfbar, abwerfbareId="abwerfbar"> {(bereitgestellt, Schnappschuss) => ( <div //Das gleiche Element, auf das provided.droppableProps angewendet wird. {...bereitgestellt.droppableProps} // Damit Droppable ordnungsgemäß funktioniert, muss es an den höchstmöglichen bereitgestellten DOM-Knoten gebunden sein. innerRef. ref={bereitgestellt.innerRef} Stil = {getListStyle (Schnappschuss)} > {this.state.items.map((item, index) => ( <Ziehbar Schlüssel={item.id} draggableId={item.id} index={index}> {(bereitgestellt, Schnappschuss) => ( <div ref={bereitgestellt.innerRef} {...bereitgestellt.draggableProps} {...bereitgestellt.dragHandleProps} Stil = {getItemStyle ( snapshot.isDragging, bereitgestellt.draggableProps.style )} > {item.content} </div> )} </Ziehbar> ))} {bereitgestellt.Platzhalter} </div> )} </Abwerfbar> </center> </DragDropContext> ); } } 3.2 Demo2 Horizontales ZiehenDie Wirkung ist wie folgt: demo2.gif Implementierungscode: Tatsächlich ähnelt es dem vertikalen Ziehen. Droppable fügt ein zusätzliches Attribut für die Reihenfolge der Anordnung hinzu: direction="horizontal" importiere React, {Komponente} von „react“; importiere { DragDropContext, Droppable, Draggable } aus „react-beautiful-dnd“; const getItems = Anzahl => ( Array.from({ Länge: Anzahl }, (v, k) => k).map(k => ({ ID: `item-${k + 1}`, Inhalt: `Dies ist Inhalt ${k + 1}` })) ) // Array-Reihenfolge neu aufzeichnen const reorder = (list, startIndex, endIndex) => { const Ergebnis = Array.from(Liste); //Löschen und die gelöschten Elemente aufzeichnen const [removed] = result.splice(startIndex, 1); //Die ursprünglichen Elemente dem Array hinzufügen result.splice(endIndex, 0, removed); Ergebnis zurückgeben; }; konstantes Raster = 8; // Stil festlegen const getItemStyle = (isDragging, draggableStyle) => ({ // einige grundlegende Stile, um die Elemente ein bisschen schöner aussehen zu lassen Benutzerauswahl: "keine", Polsterung: Gitter * 2, Rand: `0 ${grid}px 0 0 `, // Hintergrund ändert sich beim Ziehen background: isDragging ? "lightgreen" : "#ffffff", // Stile, die wir auf Draggables anwenden müssen … ziehbarer Stil }); const getListStyle = () => ({ Hintergrund: 'schwarz', Anzeige: 'flex', Polsterung: Gitter, Überlauf: „auto“, }); Klasse ReactBeautifulDndHorizontal erweitert Komponente { Konstruktor(Requisiten) { super(Requisiten); dieser.Zustand = { Artikel: getItems(10) }; dies.onDragEnd = dies.onDragEnd.bind(dies); } onDragEnd(Ergebnis) { wenn (!Ergebnis.Ziel) { zurückkehren; } const items = neu anordnen( dieser.Zustand.Artikel, Ergebnis.Quelle.Index, Ergebnis.Ziel.Index ); dies.setState({ Artikel }); } rendern() { zurückkehren ( <DragDropContext onDragEnd={this.onDragEnd}> <Droppable droppableId="abwerfbar" Richtung="horizontal"> {(bereitgestellt, Schnappschuss) => ( <div {...bereitgestellt.droppableProps} ref={bereitgestellt.innerRef} Stil = {getListStyle (Snapshot.isDraggingOver)} > {this.state.items.map((item, index) => ( <Ziehbar Schlüssel={item.id} draggableId={item.id} index={index}> {(bereitgestellt, Schnappschuss) => ( <div ref={bereitgestellt.innerRef} {...bereitgestellt.draggableProps} {...bereitgestellt.dragHandleProps} Stil = {getItemStyle ( snapshot.isDragging, bereitgestellt.draggableProps.style )} > {item.content} </div> )} </Ziehbar> ))} {bereitgestellt.Platzhalter} </div> )} </Abwerfbar> </DragDropContext> ) } } Standard exportieren ReactBeautifulDndHorizontal 3.3 Demo3 implementiert das Ziehen eines Aufgabenelements (vertikales und horizontales Ziehen)demo3.gif Die Implementierungsprinzipien sind tatsächlich ähnlich. Der Code wird organisiert und auf GitHub platziert. Adresse: github 4. GefühlZurzeit habe ich einfach react-beautiful-dnd verwendet und der Einstieg erscheint sehr einfach und die API ist nicht kompliziert. Auch die Leistung ist gut (Demo2 hat mehr als 170 Aufgaben gerendert. Das Ziehen ist immer noch flüssig wie Seide). Eventuelle Mängel werde ich künftig kennzeichnen. Dies ist das Ende dieses Artikels über Drag & Drop der React-Beautiful-DND-Komponente. Weitere relevante Inhalte zu Drag & Drop der React-Beautiful-DND-Komponente finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
>>: So fügen Sie einem Feld in MySQL eine Standardzeit hinzu
1. Geben Sie den Befehl mysqld --skip-grant-table...
Inhaltsverzeichnis Vorwort Entdecken Sie die Ursa...
1. Laden Sie mysql-5.7.21-windowx64.zip von der o...
Vorwort: Bei der täglichen Verwendung der Datenba...
1. Verwenden Sie CSS-Sprites. Der Vorteil besteht ...
Neben der Festlegung von Vorschriften für verschi...
Jeder ist wahrscheinlich mit dem Auswahl-Dropdown...
Inhaltsverzeichnis Umgebungsbeschreibung Installi...
Probleme, die bei der Optimierung auftreten könne...
Datenbankversion: mysql> select version(); +--...
Ich weiß nicht, ob Sie bemerkt haben, dass beim Ö...
1. Verschachteltes Routing wird auch als Sub-Rout...
Vorwort: Integer ist einer der am häufigsten verw...
Inhaltsverzeichnis Lastenausgleich Klassifizierun...
Die ultimative Methode zur Lösung des Ajax-Parser...