Inhaltsverzeichnis
Anforderungsanalyse
Funktionsimplementierung
rekursive Methode
Rechtsklick-Menü der Maus
Die Funktion „Hinzufügen“ kann standardmäßig nur zum Ordner hinzugefügt werden, und das Hinzufügen wird anhand des Schlüsselwerts beurteilt, der hier verarbeitet wird. Es ist relativ einfach. Es demonstriert nur die Kernfunktionen wird im vorherigen Abschnitt gezeigt;
Die Suchfunktion wird durch die Rotfärbung des Titels aufgerufen:
Drag-and-Drop-Bewegung
Ende: Die Schwierigkeit beim Suchen und Umkehren der Positionierung besteht darin, dass im offiziellen Beispiel das Attribut autoExpandParent verwendet wird viel einfacher.
Heim Web-Frontend Front-End-Fragen und Antworten Ant Design erstellt eine Baumkomponente zur Implementierung von Bearbeitungs-, Such- und Positionierungsfunktionen

Ant Design erstellt eine Baumkomponente zur Implementierung von Bearbeitungs-, Such- und Positionierungsfunktionen

Jan 13, 2022 pm 06:28 PM
ant design

Wie kann ich die Ant Design-Baumkomponente anpassen, um Bearbeitungs-, Such- und Umkehrpositionierungsfunktionen zu implementieren? Im folgenden Artikel erfahren Sie, wie Sie Baumkomponenten erstellen und diese Funktionen implementieren. Ich hoffe, er ist hilfreich für Sie!

Ant Design erstellt eine Baumkomponente zur Implementierung von Bearbeitungs-, Such- und Positionierungsfunktionen

Dieses Mal habe ich eine baumförmige Anzeigefunktion erstellt. Das Produkt ist unerwarteterweise noch unfertig:

PD: Was? Nur Funktion zum Erweitern und Reduzieren? Wie kann das funktionieren? Das Wichtigste ist, dass wir die Bearbeitung und Suche unterstützen. Wenn möglich, können wir auch eine umgekehrte Positionierung durchführen ...

YY: Warum hast du es mir nicht früher gesagt? Im Anforderungsdokument steht nichts …

PD: Wessen Dokument wurde Ihrer Meinung nach in einem Zug erstellt? Welche PD fügt keine Anforderungen hinzu?

YY: Das sagt man so, aber so funktionieren die Dinge nicht...

PD: Oh, verschwende keine Zeit, tu es einfach!

JJ: ...

Die oben genannten Geschichten sind rein fiktiv. Wenn es Ähnlichkeiten gibt, hinterlassen Sie bitte eine Nachricht im Kommentarbereich ...

Baumdaten sind in der Entwicklung relativ häufig, einschließlich Ordnern und Organisationen Strukturen, biologische Klassifikationen, Länder, Regionen usw., die meisten Strukturen auf der Welt sind Baumstrukturen. Das Baumsteuerelement kann die hierarchische Beziehung vollständig anzeigen und verfügt über interaktive Funktionen wie die Auswahl zum Erweitern und Reduzieren.

Anforderungsanalyse

  • Bearbeiten: hinzufügen/ändern/löschen/verschieben
  • Suchfunktion: Name/Ersteller/Eigentümer-Filter
  • Positionierung: Tab-Umkehrpositionierung

Projekt-Repository: https://github.com/ speakice/ editable-tree

Ant Design erstellt eine Baumkomponente zur Implementierung von Bearbeitungs-, Such- und Positionierungsfunktionen

Funktionsimplementierung

Es gibt viele Methodenbibliotheken und Komponenten, die die oben genannten Funktionen realisieren können. Hier sprechen wir nur über eine davon, die alle Komponenten von Ant Design sind:

  • Tree.DirectoryTree Directory Baum
  • Dropdown-Menücontainer mit Rechtsklick
  • Inhalt des Menümenüs
  • Tabs auf der rechten Registerkartenseite
  • Input.Search-Suchfeld
  • Zuordnungsstatus wechseln
  • Kurz-ID generiert eindeutige ID
import { Tree, Dropdown, Menu, Tabs, Input, Switch } from 'antd';import shortid from 'shortid';复制代码

rekursive Methode

Baumzeile bedienen Daten und schließlich Die wichtige Voraussetzung ist, eine praktische rekursive Methode zu haben:

/**
 * 如果需要修改tree,action就返回修改后的item, 不修改就不返回
 */export const deepTree = (tree = [], action = () => {}) => {  return tree.map((item) => {    const newItem = action({ ...item }) || item;    if (newItem.children) {
      newItem.children = deepTree(newItem.children, action);
    }    return newItem;
  });
};复制代码

Rechtsklick-Menü der Maus

Das Rechtsklick-Menü wirkt auf den Titel und Dropdown muss in die Datenquelle des Baums geschrieben werden Komponente:

    <directorytree> setRightClickKey(node.key)}
          onSelect={onSelect}
          selectedKeys={rightConnect ? [activeTabKey] : selectedKeys}
          onExpand={onExpand}
          treeData={[
            ...deepTree(treeData, (item) => {              return {
                ...item,                titleWord: item.title,                title: (                  <dropdown> setRightClickKey()}
                    overlayStyle={{ width: 80 }}
                    overlay={menu(item)}
                  >                    <div>
                      {item.title}                    </div>                  </dropdown>
                ),
              };
            }),
          ]}
        />复制代码</directorytree>

Es gibt ein paar Punkte zum Rechtsklick-Menü. Zusätzliche Erklärung: Das Trigger-Attribut von

  • Dropdown muss auf contextMenu gesetzt werden; die von
  • Dropdown angezeigte Position ist relativ zum Titel Die Breite des äußeren Containers muss so eingestellt werden, dass er den verbleibenden Platz ausfüllt:
.ant-tree-node-content-wrapper {  display: flex;
}.ant-tree-title {  flex: 1;
}复制代码
  • Die Anzeige des Dropdown-Menüs wird durch Klicken mit der rechten Maustaste auf die aufgezeichnete Taste beurteilt.
  • Das Dropdown-Menü muss das aktuelle Element übergeben
      const menu = (node) => (    <menu> {
            domEvent.stopPropagation();
            console.log('menuClick', node, key);
            // 如果要添加操作顶层文件夹,可以直接操作
            switch (key) {
              case 'add':
                setTreeData(
                  deepTree(treeData, (item) => {
                    if (item.children && item.key === node.key) {
                      return {
                        ...item,
                        children: [
                          ...item.children,
                          {
                            title: 'new add',
                            key: shortid.generate(),
                            isLeaf: true,
                          },
                        ],
                      };
                    }
                  })
                );
                break;
              case 'delete':
                const outer = treeData.find((item) => item.key === node.key);
                if (outer) {
                  setTreeData(treeData.filter((item) => item.key !== node.key));
                  return;
                }
                setTreeData(
                  deepTree(treeData, (item) => {
                    if (item.children) {
                      return {
                        ...item,
                        children: item.children.filter(
                          ({ key }) => key !== node.key
                        ),
                      };
                    }
                    return item;
                  })
                );
                break;
              case 'edit':
                setTreeData(
                  deepTree(treeData, (item) => {
                    if (item.key === node.key) {
                      console.log('editle', {
                        ...item,
                        title: 'new edit',
                      });
                      return {
                        ...item,
                        title: 'new edit',
                      };
                    }
                    return item;
                  })
                );
                break;
            }
          }}
        >      <menu.item>新增</menu.item>      <menu.item>
            删除      </menu.item>      <menu.item>编辑</menu.item>    </menu>
      );复制代码
  • Funktion zum Hinzufügen/Ändern/Löschen

Die Funktion „Hinzufügen“ kann standardmäßig nur zum Ordner hinzugefügt werden, und das Hinzufügen wird anhand des Schlüsselwerts beurteilt, der hier verarbeitet wird. Es ist relativ einfach. Es demonstriert nur die Kernfunktionen wird im vorherigen Abschnitt gezeigt;

Ant Design erstellt eine Baumkomponente zur Implementierung von Bearbeitungs-, Such- und Positionierungsfunktionen hat auch ein einfaches Beispiel für die Änderungsfunktion. In formalen Projekten ist es im Allgemeinen erforderlich, ein Eingabefeld in den Titel der Baumkomponente einzubetten Sie können Variablen verwenden, um das bearbeitete Element aufzuzeichnen und es schließlich durch Rekursion in die Baumdaten einzufügen:

Ant Design erstellt eine Baumkomponente zur Implementierung von Bearbeitungs-, Such- und PositionierungsfunktionenDie Löschfunktion trifft eine Beurteilung. Wenn die äußerste Ebene gelöscht wird, wird sie direkt durch den Filter gefiltert ,

⚠️

andernfallslöschen Funktionen werden nach Kindern gefiltert, also seien Sie hier besonders aufmerksam. Suchfunktion

Die Suchfunktion wird durch die Rotfärbung des Titels aufgerufen:

Ant Design erstellt eine Baumkomponente zur Implementierung von Bearbeitungs-, Such- und PositionierungsfunktionenIn der Implementierung erfolgt die Suche nur nach dem Klicken auf „Suchen“. Es gibt keine Echtzeit-Suchaufforderung und keine Suchwortunterscheidung Um dies durch Herunterladen einer Zeichenfolge zu implementieren, können Sie sich das

offizielle Beispiel

ansehen. Beachten Sie, dass das Attribut autoExpandParent standardmäßig den übergeordneten Knoten aktiviert, andernfalls kann die Rekursion nach oben etwas Aufwand erfordern.

Ant Design erstellt eine Baumkomponente zur Implementierung von Bearbeitungs-, Such- und Positionierungsfunktionen

Es besteht ein weiterer Bedarf zum Filtern der Datenquelle, der durch einfaches Ändern der offiziellen Instanz

Tab-Umkehrpositionierung

erreicht werden kann

Klicken Sie auf das Baumkomponentenelement, fügen Sie rechts eine Registerkarte hinzu oder aktivieren Sie die Registerkarte. Dies kann als Vorwärtspositionierung angesehen werden. Dies bedeutet, dass beim Umschalten der Registerkartenseite auf der rechten Seite die Baumkomponente auf der linken Seite das entsprechende Element auswählt , und der Kerncode besteht darin, selectedKeys anzugeben. Die Schwierigkeit besteht darin, den relevanten übergeordneten Knoten standardmäßig zu öffnen. Natürlich ist es gut, das Attribut autoExpandParent zu steuern.

Ant Design erstellt eine Baumkomponente zur Implementierung von Bearbeitungs-, Such- und Positionierungsfunktionen

Drag-and-Drop-Bewegung

Drag-and-Drop-Bewegung wird von der Baumkomponente selbst unterstützt, und zweitens hat der Beamte Drag-and-Drop-Bewegungsbeispiele bereitgestellt Beispiel, daher werde ich hier nicht auf Details eingehen :

Ant Design erstellt eine Baumkomponente zur Implementierung von Bearbeitungs-, Such- und Positionierungsfunktionen

Ende: Die Schwierigkeit beim Suchen und Umkehren der Positionierung besteht darin, dass im offiziellen Beispiel das Attribut autoExpandParent verwendet wird viel einfacher.

Es ist noch nicht zu früh, wir sind heute hier.

Weitere Kenntnisse zum Thema Programmierung finden Sie unter:

Programmiervideos

! !

Das obige ist der detaillierte Inhalt vonAnt Design erstellt eine Baumkomponente zur Implementierung von Bearbeitungs-, Such- und Positionierungsfunktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP-Tutorial
1598
276
Was ist der Zweck des REL -Attributs in einem Link -Tag in HTML? Was ist der Zweck des REL -Attributs in einem Link -Tag in HTML? Aug 03, 2025 pm 04:50 PM

rel = "styleSheet" linkScssFilesforstylingThePage; 2.rel = "vorlad" HintStopreloadcriticalResourcesForperformance; 3.rel = "icon" setStheWebsit'sfavicon;

Was ist der Zweck des Zielattributs des Anker -Tags in HTML? Was ist der Zweck des Zielattributs des Anker -Tags in HTML? Aug 02, 2025 pm 02:23 PM

ThetargetAttributeinanHtmlanchortagSpecifieswheretoophelinkedDocument.1._SelfoPenTheLinkinTheSametab (Standard) .2._BlankopensTheLeNanewtaborWindow.3._ParentopenTheParentFrame

Bauen Sie benutzerdefinierte, wiederverwendbare Haken in React Bauen Sie benutzerdefinierte, wiederverwendbare Haken in React Aug 03, 2025 pm 04:51 PM

AgoodcustomhookinreactisareusableFunctionStarting mit "thisencapsStulatesfullogicforSharingacrosscomponenten";

Wie können Sie vom Benutzer ein HTML -Element bearbeitet? Wie können Sie vom Benutzer ein HTML -Element bearbeitet? Aug 11, 2025 pm 05:23 PM

Ja, Sie können HTML -Elemente mithilfe des inhaltlichen Attributs bearbeitbar machen. Die spezifische Methode besteht darin, dem Zielelement contenteditable = "true" hinzuzufügen. Sie können diesen Text beispielsweise bearbeiten und der Benutzer kann den Inhalt direkt klicken und ändern. Dieses Attribut eignet sich für Block- und Inline-Elemente wie Div, P, Span, H1 bis H6. Der Standardwert ist "wahr", um bearbeitbar, "falsch" zu sein, um nicht editabel zu sein, und "erben", um die Einstellungen für das übergeordnete Element zu erben. Um die Zugänglichkeit zu verbessern, wird empfohlen, tabindex = "0 & quo hinzuzufügen

So verwenden Sie Del und INS -Tags in HTML So verwenden Sie Del und INS -Tags in HTML Aug 12, 2025 am 11:38 AM

ThetagisusesedTomarkDeletedText, optional mit dem Datetimeandcitattributestospecifywhen und whyTHEDETIONOCCCURRED.2.THETAGINDICATESSERTEDCONTENT, alsososupportingDatetimeinndciteforcontextheaddition.3.TheSetagsagensetagsagensetagsagensetoagens

So verwenden Sie CSS -Gradienten für Hintergründe So verwenden Sie CSS -Gradienten für Hintergründe Aug 17, 2025 am 08:39 AM

CsgradientsProvidesmoothColorTransitionSwithoutimages.1.LINEARGRANSITANSCOLORGALONGASTRAILGLINE -UNTERDICECTIONSLIKETOBTOTMORANGLESSHALTS45DEG und SUPPORTMULTIPIPIPECOLORTOPSPORTOPSCUCKICKICKICKLECLECLECLEO

So erstellen Sie einen reaktionsschnellen Testimonial Slider mit CSS So erstellen Sie einen reaktionsschnellen Testimonial Slider mit CSS Aug 12, 2025 am 09:42 AM

Es ist möglich, einen reaktionsschnellen automatischen Karussellschieber mit reinem CSS zu erstellen. Kombinieren Sie einfach die HTML -Struktur, das Flexbox -Layout und die CSS -Animation. 2. Erstellen Sie zuerst einen semantischen HTML -Container, der mehrere Empfehlungsbegriffe enthält. IITEM enthält Referenzinhalt und Autoreninformationen. 3.. Verwenden Sie den übergeordneten Container, um Anzeige zu setzen: Flex, Breite: 300% (drei Folien) und Überlauf auftragen: versteckt, um eine horizontale Anordnung zu erreichen. 4. Verwenden Sie @KeyFrames, um eine Translatex -Transformation von 0% auf -100% zu definieren und Animation zu kombinieren: Scroll15Slinearinfinite, um nahtloses automatisches Scrollen zu erzielen. 5. Medien hinzufügen

So verwenden Sie CSS -Selektoren effektiv So verwenden Sie CSS -Selektoren effektiv Aug 11, 2025 am 11:12 AM

Bei der Verwendung von CSS-Selektoren sollten zuerst niedrig spezifische Selektoren verwendet werden, um übermäßige Einschränkungen zu vermeiden. 1. Verstehen Sie die Spezifitätsniveau und verwenden Sie sie in der Reihenfolge von Typ, Klasse und ID vernünftigerweise; 2. Verwenden Sie Mehrzweck-Klassennamen, um die Wiederverwendbarkeit und Wartbarkeit zu verbessern. 3.. Verwenden Sie Attribute und Pseudo-Klasse-Selektoren, um Leistungsprobleme zu vermeiden. 4. Halten Sie den Selektor kurz und klar; 5. Verwenden Sie BEM und andere Namensschwerpunkte, um die strukturelle Klarheit zu verbessern. 6. Vermeiden Sie den Missbrauch von Tag-Selektoren und: N-ten Kind und geben Sie der Verwendung von Werkzeugklassen oder modularen CSS Vorrang, um sicherzustellen, dass der Stil für lange Zeit kontrollierbar ist.

See all articles