Typescript+React zum Erzielen einfacher Drag-and-Drop-Effekte auf Mobilgeräten und PCs

Typescript+React zum Erzielen einfacher Drag-and-Drop-Effekte auf Mobilgeräten und PCs

In diesem Artikel wird der spezifische Code von Typescript+React zur Erzielung einfacher Drag-and-Drop-Effekte auf Mobilgeräten und PCs als Referenz bereitgestellt. Der spezifische Inhalt ist wie folgt

1. Handy, Mobiltelefon

1.tsx-Code

importiere { Komponente } von „react“;
importiere './Tab.less'
Schnittstelle Requisiten {
 
}
Schnittstelle Benutzer {
    ID: Zeichenfolge,
    Text: Zeichenfolge
}
Schnittstelleninhalt {
    ID: Zeichenfolge,
    Text: Zeichenfolge
}
Schnittstelle Status {
    ButtonIndex: Zahl,
    ButtonArray: Benutzer[],
    ContentArray: Inhalt[]
}
Klasse Tab erweitert Component<Props, State>{
    Konstruktor(Requisiten: Requisiten) {
        super(Requisiten)
        dieser.Zustand = {
            ButtonIndex: 0,
            Schaltflächenarray: [
                {
                    ID: '01',
                    Text: 'Schaltfläche 1'
                },
                {
                    ID: '02',
                    Text: 'Schaltfläche 2'
                },
                {
                    ID: '03',
                    Text: 'Knopf drei'
                }
            ],
            Inhaltsarray: [
                {
                    ID: "c1",
                    Text: 'Inhalt 1'
                },
                {
                    ID: "c2",
                    Text: 'Inhalt 2'
                },
                {
                    ID: "c3",
                    Text: 'Inhalt 3'
                }
            ],
        }
    }
    FnTab(index: zahl):void {
        dies.setState({
            ButtonIndex: Index
        })
    }
    rendern() {
        zurückkehren (
            <div Klassenname='Tabulator'>
                {
                    this.state.ButtonArray.map((Element, Index) => <Schaltflächenschlüssel={Element.id} bei Klick={this.FnTab.bind(this, Index)} Klassenname={this.state.ButtonIndex === Index ? 'Tab-Button ac' : 'Tab-Button'}>{Element.text}</Schaltflächen>)
                }
                {
                    this.state.ContentArray.map((Element, Index) => <div Schlüssel={Element.id} Stil={{display:this.state.ButtonIndex===index?'block':'none'}} Klassenname='tab-content'>{Element.text}</div>)
                }
 
            </div>
        )
    }
}
Registerkarte „Standard exportieren“

2. CSS-Code

.ziehen {
    Position: absolut;
    Breite: 100px;
    Höhe: 100px;
    Hintergrundfarbe: rot;
}

2. PC

1.tsx-Code

importiere { Komponente, createRef } von 'react'
importiere './index.less'
Schnittstelle Requisiten {
 
 
}
Schnittstelle Status {
 
 
}
Klasse TextDrag erweitert Komponente {
  disX: Zahl = 0
  disY: Zahl = 0
  x: Zahl = 0
  y: Zahl = 0
  dragElement = createRef<HTMLDivElement>()
  Konstruktor(Requisiten: Requisiten) {
    super(Requisiten)
    dieser.Zustand = {
 
 
    }
  }
  FnDown(ev: React.MouseEvent) {
    wenn (dieses.dragElement.current) {
      this.disX = ev.clientX - this.dragElement.current?.getBoundingClientRect().left
      this.disX = ev.clientY - this.dragElement.current?.getBoundingClientRect().top
    }
    Dokument.onmousemove = dies.FnMove.bind(dies)
    Dokument.onmouseup = dies.FnUp
  }
  FnMove(ev: Mausereignis) {
    dies.x = ev.clientX - dies.disX
    dies.y = ev.clientY - dies.disY
    wenn (dieses.dragElement.current) {
      dies.dragElement.current.style.left = dies.x + 'px'
      dies.dragElement.current.style.top = dies.y + 'px'
    }
  }
  FnUp() {
    document.onmousemove = null
    document.onmouseup = null
  }
  rendern() {
    zurückkehren (
      <div className="TextDrag" ref={this.dragElement} onMouseDown={this.FnDown.bind(this)}> </div>
 
 
    )
  }
}

Standard-TextDrag exportieren

2. CSS-Code

.TextDrag{
    Position: absolut;
    Breite: 100px;
    Höhe: 100px;
    Hintergrundfarbe: rot;
}

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung des verschiebbaren und bearbeitbaren Gantt-Diagramms (Highcharts können für Vue und React verwendet werden)
  • react-beautiful-dnd implementiert die Drag-and-Drop-Funktion für Komponenten
  • Verwenden von react-beautiful-dnd zum Implementieren von Drag & Drop zwischen Listen
  • Mehr als 100 Zeilen Code zur Implementierung von React Drag Hooks
  • React.js-Komponente implementiert Drag & Drop-Sortierkomponentenfunktionsprozessanalyse
  • Reagieren Sie mit Beispielcode zur Implementierung der Drag & Drop-Funktion
  • React.js-Komponente implementiert Drag-and-Drop-Kopie und sortierbaren Beispielcode
  • Lassen Sie uns noch einmal über eine Reihe von Problemen sprechen, die durch die Implementierung nativer JS-Drag-Effekte in React.js verursacht werden
  • Gedanken zur Implementierung nativer JS-Drag-Effekte basierend auf React.js
  • React implementiert einfache Drag & Drop-Funktion

<<:  Detaillierte Erläuterung des MySQL-Clusterindex und des Nicht-Clusterindex

>>:  Detaillierte Schritte zum Bereitstellen von SpringBoot-Projekten mit Docker in Idea

Artikel empfehlen

Lösungen für den Fehler und die Ungültigkeit beim Öffnen von nginx.pid

Inhaltsverzeichnis 1. Problembeschreibung 2. Prob...

MySQL hilft Ihnen, Index-Pushdown in Sekunden zu verstehen

Inhaltsverzeichnis 1. Das Prinzip der Index-Push-...

CSS3 verwendet scale() und rotate() zum Zoomen und Drehen

1. scale()-Methode Zoom steht für „Verkleinern“ u...

Vue implementiert ein verschiebbares Baumstrukturdiagramm

Inhaltsverzeichnis Rekursive Vue-Komponente Drag-...

Mysql8.0 verwendet Fensterfunktionen, um Sortierprobleme zu lösen

Einführung in MySQL-Fensterfunktionen MySQL unter...

So verwenden Sie griechische Buchstaben in HTML-Seiten

Griechische Buchstaben sind eine sehr häufig verw...

Vue Learning - Grundlagen des VueRouter-Routings

Inhaltsverzeichnis 1. VueRouter 1. Beschreibung 2...

Analyse der Verwendung des MySQL-Datenbankbefehls „show processlist“

Wenn bei der tatsächlichen Projektentwicklung die...

Implementierungsbeispiel für dynamische Routing-Breadcrumbs für Elemente

Zu meistern: localStorage, Komponentenkapselung Ä...

Anleitung zum Zurücksetzen des MySQL/MariaDB-Root-Passworts

Vorwort Vergessene Passwörter sind ein Problem, d...