Table des matières
Analyse des besoins
Implémentation de fonctions
méthode récursive
Menu contextuel de la souris
Ajouter une fonction ne peut être ajouté au dossier que par défaut, et l'ajout est jugé par la valeur clé, qui est traitée ici. C'est relativement simple. Il ne démontre que les fonctions de base. montré dans la section précédente ;
La fonction de recherche est déclenchée par la couleur du titre qui devient rouge :
Mouvement glisser-déposer
Fin
Maison interface Web Questions et réponses frontales Ant Design crée un composant arborescent pour implémenter les fonctions d'édition, de recherche et de positionnement

Ant Design crée un composant arborescent pour implémenter les fonctions d'édition, de recherche et de positionnement

Jan 13, 2022 pm 06:28 PM
ant design

Comment personnaliser le composant de l'arborescence Ant Design pour implémenter les fonctions d'édition, de recherche et de positionnement inversé ? L'article suivant vous présentera comment créer des composants d'arborescence et implémenter ces fonctions. J'espère qu'il vous sera utile !

Ant Design crée un composant arborescent pour implémenter les fonctions d'édition, de recherche et de positionnement

Cette fois, j'ai réalisé une fonction d'affichage en forme d'arbre. De façon inattendue, le produit est encore inachevé. Venez me parler :

PD : Quoi ? Uniquement la fonction d'expansion et de réduction ? Comment cela peut-il fonctionner ? Notre chose la plus fondamentale est de prendre en charge l'édition et la recherche. Si possible, nous pouvons également effectuer un positionnement inversé...

YY : Pourquoi ne me l'avez-vous pas dit plus tôt ? Il n'y a rien dans le document d'exigences...

PD : Selon vous, quel document a été rédigé en une seule fois ? Quel PD n’ajoute pas d’exigences ?

YY : C'est ce qu'on dit, mais ce n'est pas comme ça que les choses fonctionnent...

PD : Oh, ne perds pas de temps, fais-le !

YY : ...

Les histoires ci-dessus sont purement fictives. S'il y a des similitudes, veuillez laisser un message dans la zone de commentaire...

Les données d'arborescence sont relativement courantes dans le développement, y compris les dossiers et l'organisation. structures, classifications biologiques, pays, régions, etc., la plupart des structures de tout dans le monde sont des structures arborescentes. Le contrôle d'arborescence peut afficher entièrement la relation hiérarchique et dispose de fonctions interactives telles que la sélection d'expansion et de réduction.

Analyse des besoins

  • Modification : ajouter/modifier/supprimer/déplacer
  • Fonction de recherche : filtre nom/créateur/propriétaire
  • Positionnement : positionnement inversé de l'onglet

Référentiel du projet : https://github.com/ speakice/ editable-tree

Ant Design crée un composant arborescent pour implémenter les fonctions dédition, de recherche et de positionnement

Implémentation de fonctions

Il existe de nombreuses bibliothèques de méthodes et composants qui peuvent réaliser les fonctions ci-dessus, nous ne parlons ici que d'un d'entre eux, qui sont tous des composants d'Ant Design :

  • Tree.DirectoryTree Directory. Tree
  • Conteneur de menu déroulant avec clic droit
  • Contenu du menu du menu
  • Onglets à droite de la page de l'onglet
  • Input.Search champ de recherche
  • Switch switch association status
  • shortid génère un identifiant unique
import { Tree, Dropdown, Menu, Tabs, Input, Switch } from 'antd';import shortid from 'shortid';复制代码

méthode récursive

faire fonctionner une rangée d'arbre données, et enfin Le principe important est d'avoir une méthode récursive pratique :

/**
 * 如果需要修改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;
  });
};复制代码

Le menu contextuel agit sur le titre, et le menu déroulant doit être écrit dans la source de données de l'arborescence composant :

    <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>

Il y a quelques points concernant le menu contextuel. Explication supplémentaire : l'attribut déclencheur de

  • Dropdown doit être défini sur contextMenu ; la position affichée par
  • Dropdown est relative au titre, et le la largeur du conteneur extérieur doit être définie pour remplir l'espace restant :
.ant-tree-node-content-wrapper {  display: flex;
}.ant-tree-title {  flex: 1;
}复制代码
  • L'affichage du menu déroulant est jugé en cliquant avec le bouton droit sur la clé enregistrée
  • Le menu déroulant doit transmettre l'élément actuel ;
  • Ajouter/modifier/supprimer une fonction

Ajouter une fonction ne peut être ajouté au dossier que par défaut, et l'ajout est jugé par la valeur clé, qui est traitée ici. C'est relativement simple. Il ne démontre que les fonctions de base. montré dans la section précédente ;

Ant Design crée un composant arborescent pour implémenter les fonctions dédition, de recherche et de positionnement a également un exemple simple de la fonction de modification. Dans les projets formels, il est généralement nécessaire d'éditer une fenêtre contextuelle ou d'intégrer une zone de saisie dans le titre du composant arborescent. utilisez des variables pour enregistrer l'élément en cours d'édition, puis enregistrez-le et insérez-le dans les données de l'arborescence par récursion :

Ant Design crée un composant arborescent pour implémenter les fonctions dédition, de recherche et de positionnementLa fonction de suppression rend un jugement Si la couche la plus externe est supprimée, elle est filtrée directement à travers le filtre,

⚠️

sinonLes fonctions de suppression sont filtrées par les enfants, alors faites particulièrement attention ici. Fonction de recherche

La fonction de recherche est déclenchée par la couleur du titre qui devient rouge :

Ant Design crée un composant arborescent pour implémenter les fonctions dédition, de recherche et de positionnementDans la mise en œuvre, elle ne recherche qu'après avoir cliqué sur Rechercher. Il n'y a pas d'invite de recherche en temps réel et aucune distinction de mot de recherche. Vous pouvez intercepter. ici Pour l'implémenter en téléchargeant une chaîne, vous pouvez voir l'

exemple officiel

, notez que l'attribut autoExpandParent active le nœud parent par défaut, sinon cela peut prendre un certain effort pour récurer vers le haut.

Ant Design crée un composant arborescent pour implémenter les fonctions dédition, de recherche et de positionnement

Il existe un autre besoin de filtrer la source de données, ce qui peut être réalisé en modifiant simplement l'instance officielle

Positionnement inversé des onglets

 ;

Cliquez sur l'élément du composant Arbre, ajoutez un onglet à droite ou activez l'onglet, qui peut être considéré comme un positionnement avant ; le positionnement inverse signifie que lorsque la page Onglet de droite est basculée, le composant Arbre de gauche sélectionne l'élément correspondant. , et le code principal consiste à spécifier selectedKeys. Ce n'est pas difficile en comparaison. La difficulté est d'ouvrir le nœud parent concerné par défaut. Bien sûr, comme mentionné précédemment, il est bon de contrôler l'attribut autoExpandParent.

Ant Design crée un composant arborescent pour implémenter les fonctions dédition, de recherche et de positionnement

Mouvement glisser-déposer

Le mouvement glisser-déposer est pris en charge par le composant Arbre lui-même, et deuxièmement, le responsable a fourni des exemples de mouvements glisser-déposer. exemple, je n'entrerai donc pas dans les détails ici. :

Ant Design crée un composant arborescent pour implémenter les fonctions dédition, de recherche et de positionnement

Fin

La difficulté de recherche et de positionnement inversé est en fait l'ouverture du dossier associé. Cependant, l'attribut autoExpandParent est utilisé dans l'exemple officiel, ce qui le rend. beaucoup plus simple.

Il n’est pas trop tôt, nous sommes là aujourd’hui.

Pour plus de connaissances sur la programmation, veuillez visiter : Vidéos de programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1596
276
Une plongée profonde dans WebAssembly (WASM) pour les développeurs frontaux Une plongée profonde dans WebAssembly (WASM) pour les développeurs frontaux Jul 27, 2025 am 12:32 AM

WebAssembly (WASM) isagame-changerforfront-enddeveloperseeekinghigh-performancewebapplications.1.wasmisabinaryinstructionFormatThatrunsatNear-Nativespeed, AmatingLanguagesLikerUst, C, etgotoexeteinthebrowser.2

Quel est le but de l'attribut REL dans une balise de liaison dans HTML? Quel est le but de l'attribut REL dans une balise de liaison dans HTML? Aug 03, 2025 pm 04:50 PM

rel = "Stylesheet" linkSsssFilesForSTylingThepage; 2.rel = "Preload" HintstopreloadCriticalResourcesForPerformance; 3.rel = "icon" setthewebsite’sfaviCon; 4.rel = "alternate" fournit la réversion desstiètes; 5.rel = & Qu

Quel est le but de l'attribut cible de la balise d'ancrage dans HTML? Quel est le but de l'attribut cible de la balise d'ancrage dans HTML? Aug 02, 2025 pm 02:23 PM

ThetargetAttributeinanhtmlanchortagspecifieswheretoopenthelinkedDocument.1._setropensthelinkinthesametab (par défaut) .2._blankopensthelinkinanewtaborwindow.3._parentopensthelinkintheparentframe.

Construire des crochets personnalisés et réutilisables en réaction Construire des crochets personnalisés et réutilisables en réaction Aug 03, 2025 pm 04:51 PM

AgoodCustomHookInReactisareUsable apunctionstarting avec "utilisez" que lacapaplulertateflogicforSharingAcrossComponents; ItSoldSolveAcomMonProblem, beflexiblethroughParameters likeUsefetch (URL, options), reversistestructureuchasanarrayorobJe (URL, options), RetourConSentSistRuctureSuchasanArrayorobJE

Comment utiliser les balises Del et INS dans HTML Comment utiliser les balises Del et INS dans HTML Aug 12, 2025 am 11:38 AM

ThetagisUsesedTomarkdeletedText, éventuellement, avec la manière dont la civil de la manière

Comment créer un curseur de témoignage réactif avec CSS Comment créer un curseur de témoignage réactif avec CSS Aug 12, 2025 am 09:42 AM

Il est possible de créer un curseur de carrousel automatique réactif avec un CSS pur, il suffit de combiner la structure HTML, la disposition Flexbox et l'animation CSS. 2. Construisez d'abord un conteneur HTML sémantique contenant plusieurs termes de recommandation, chaque .Item contient du contenu de référence et des informations sur l'auteur. 3. Utilisez le conteneur parent pour définir l'affichage: flex, largeur: 300% (trois diapositives) et appliquez un débordement: caché pour obtenir une disposition horizontale. 4. Utilisez @KeyFrames pour définir une transformation Translatex de 0% à -100%, et combinez l'animation: Scroll15SLineArinfinite pour obtenir un défilement automatique sans faille. 5. Ajouter des médias

Comment utiliser les gradients CSS pour les arrière-plans Comment utiliser les gradients CSS pour les arrière-plans Aug 17, 2025 am 08:39 AM

CssgradientProvidesMoothColOrTransitionwithOrtimages.1.LeargradientSitransitionColorsAlongastraightLinedDirectionsliketobottomorangleslike45deg, andsupportmultiplecolorstopsforculeo

Comment pouvez-vous rendre un élément HTML modifiable par l'utilisateur? Comment pouvez-vous rendre un élément HTML modifiable par l'utilisateur? Aug 11, 2025 pm 05:23 PM

Oui, vous pouvez rendre les éléments HTML modifiables en utilisant l'attribut satisfait. La méthode spécifique consiste à ajouter un contenudtable = "true" à l'élément cible. Par exemple, vous pouvez modifier ce texte et l'utilisateur peut cliquer directement et modifier le contenu. Cet attribut convient aux éléments au niveau du bloc et en ligne tels que Div, P, Span, H1 à H6. La valeur par défaut est "vrai" pour être modifiable, "False" n'est pas éditable, et "hériter" pour hériter des paramètres de l'élément parent. Afin d'améliorer l'accessibilité, il est recommandé d'ajouter tabindex = "0 & quo

See all articles