国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison interface Web js tutoriel Création d'un éditeur RichText avec TipTap dans React (avec mentions)

Création d'un éditeur RichText avec TipTap dans React (avec mentions)

Nov 25, 2024 am 11:48 AM

Building a RichText Editor with TipTap in React (with Mentions)

Si vous souhaitez améliorer votre application React avec un éditeur RichText puissant et personnalisable, TipTap est un excellent choix. Ce tutoriel vous guidera dans l'intégration de TipTap dans votre projet et l'ajout d'une fonctionnalité de mentions pour une expérience utilisateur dynamique.

Ce que vous construirez

à la fin de ce tutoriel, vous aurez?:

  1. Un éditeur RichText entièrement fonctionnel construit avec TipTap.
  2. Prise en charge des mentions déclenchées par @, complétée par des listes de suggestions dynamiques.
  3. Aper?u de la résolution des cas extrêmes tels que la visibilité des espaces réservés et la préservation du curseur.

Pour en savoir plus sur TipTap, visitez la documentation officielle ou explorez leur référentiel GitHub.

étape 1?: Installer les dépendances
Avant de vous lancer, installez les bibliothèques requises?:

npm install @tiptap/react @tiptap/starter-kit @tiptap/extension-mention

étape 2?: Créer un éditeur RichText de base

Commencez par créer un composant RichTextEditor. Voici une mise en ?uvre simple?:

import { useEditor, EditorContent } from '@tiptap/react';  

import StarterKit from '@tiptap/starter-kit';  

export const RichTextEditor = ({ content, onChange }) => {  
  const editor = useEditor({  
    extensions: [StarterKit],  
    content: content,  
    onUpdate: ({ editor }) => {  
      onChange(editor.getHTML());  
    },  
  });  
  return <EditorContent editor={editor} />;  
};

étape 3?: ajouter des mentions

Les mentions améliorent l'interactivité des utilisateurs, notamment dans les applications de chat ou de collaboration. Pour les mettre en ?uvre?:

  1. Installer et configurer l'extension de mention

Modifiez le composant RichTextEditor pour inclure l'extension Mention?:

import Mention from '@tiptap/extension-mention';  

export const RichTextEditor = ({ content, onChange, mentions }) => {  
  const editor = useEditor({  
    extensions: [  
      StarterKit,  
      Mention.configure({  
        HTMLAttributes: { class: 'mention' },  
        suggestion: {  
          items: ({ query }) =>  
            mentions.filter(item => item.display.toLowerCase().includes(query.toLowerCase())).slice(0, 5),  
          render: () => {  
            let component;  
            let popup;  
            return {  
              onStart: (props) => {  
                popup = document.createElement('div');  
                popup.className = 'mention-popup';  
                document.body.appendChild(popup);  
                component = {  
                  updateProps: () => {  
                    popup.innerHTML = `  
                      <div>



<h3>
  
  
  Step 4: Style the Mentions Popup
</h3>

<p>Mentions should be visually distinct. Add the following styles to enhance usability:<br>
</p>

<pre class="brush:php;toolbar:false">.mention-popup {  
  background: white;  
  border-radius: 8px;  
  box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.1);  
  padding: 8px;  
  position: absolute;  
  z-index: 1000;  
}  
.mention-popup .items {  
  display: flex;  
  flex-direction: column;  
}  
.mention-popup .item {  
  padding: 8px;  
  cursor: pointer;  
  border-radius: 4px;  
}  

.mention-popup .item:hover,  
.mention-popup .item.is-selected {  
  background: #f0f0f0;  
}

étape 5?: Cas extrêmes auxquels j'ai été confronté lors de la mise en ?uvre

  1. Saut de curseur?: Pour éviter que le curseur ne saute lors de la saisie, assurez-vous que les mises à jour du contenu préservent la position du curseur?:
const editor = useEditor({  
  extensions: [StarterKit],  
  content,  
  onUpdate: ({ editor }) => {  
    const selection = editor.state.selection;  
    onChange(editor.getHTML());  
    editor.commands.setTextSelection(selection);  
  },  
});
  1. Espace réservé non visible?:

Utilisez l'extension Placeholder pour afficher un indice lorsque l'éditeur est vide?:

import Placeholder from '@tiptap/extension-placeholder';  
const editor = useEditor({  
  extensions: [  
    StarterKit,  
    Placeholder.configure({ placeholder: 'Type something...' }),  
  ],  
});
  1. Mentionner les suggestions qui ne s'affichent pas?: Vérifiez la méthode suggestion.items pour vous assurer qu'elle filtre et renvoie la liste attendue.

étape 6?: Intégrez-la à votre application

Enveloppez l'éditeur dans un composant modal ou de formulaire pour l'intégrer à une fonctionnalité plus large, telle que des notifications ou des commentaires. Voici un exemple?:

import React from 'react';  

const NotificationForm = ({ mentions, onSubmit }) => {  
  const [content, setContent] = React.useState('');  
  return (  
    <form onSubmit={() => onSubmit(content)}>  
      <RichTextEditor content={content} onChange={setContent} mentions={mentions} />  
      <button type="submit">Send</button>  
    </form> 
  );  
};

Conclusion

Avec TipTap, vous pouvez créer un éditeur RichText à la fois puissant et convivial. L'ajout de mentions améliore l'interactivité de votre application, la rendant plus attrayante pour les utilisateurs.

Pour en savoir plus, visitez le site officiel TipTap. Avez-vous appris quelque chose de nouveau grace à cet article ? Faites-le moi savoir dans les commentaires ! ?

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 grace à 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)

Javascript contre Java: Quelle langue devez-vous apprendre? Javascript contre Java: Quelle langue devez-vous apprendre? Jun 10, 2025 am 12:05 AM

JavascriptSidealforWebDevelopment, tandis que JavasuitsLarge-ScaleApplicationsAndAndroidDevelopment.1) JavascriptExcelsInCreatingInteractiveWebexperiences andfull-stackdevelopmentwithnode.js.2)

Quels commentaires symboles à utiliser dans javascript: une explication claire Quels commentaires symboles à utiliser dans javascript: une explication claire Jun 12, 2025 am 10:27 AM

Dans JavaScript, le choix d'un commentaire à une seule ligne (//) ou d'un commentaire en plusieurs lignes (//) dépend de l'objectif et des exigences du projet du commentaire: 1. Utilisez des commentaires à une seule ligne pour une interprétation rapide et en ligne; 2. Utilisez des commentaires multi-lignes pour une documentation détaillée; 3. Maintenir la cohérence du style de commentaire; 4. évitez la sur-annulation; 5. Assurez-vous que les commentaires sont mis à jour de manière synchrone avec le code. Le choix du bon style d'annotation peut aider à améliorer la lisibilité et la maintenabilité de votre code.

Le guide ultime des commentaires JavaScript: améliorer la clarté du code Le guide ultime des commentaires JavaScript: améliorer la clarté du code Jun 11, 2025 am 12:04 AM

Oui, JavaScriptComments ararecessey et devraient être utilisés en fonction de la manière

Commentaires JavaScript: Explication courte Commentaires JavaScript: Explication courte Jun 19, 2025 am 12:40 AM

JavaScriptCommentsaSententialFormantaining, Reading et GuidingCodeEexecution.1) unique-linecomesaUSEUSEFORQUICKEXPLANATIONS.2) Multi-linecommentSExPlainComplexLogicorProvideTailedDocumentation.3) Inlinecomementsclarifypecifications

Java vs Javascript: effacer la confusion Java vs Javascript: effacer la confusion Jun 20, 2025 am 12:27 AM

Java et JavaScript sont différents langages de programmation, chacun adapté à différents scénarios d'application. Java est utilisé pour le développement des grandes entreprises et des applications mobiles, tandis que JavaScript est principalement utilisé pour le développement de pages Web.

Ma?triser les commentaires JavaScript: un guide complet Ma?triser les commentaires JavaScript: un guide complet Jun 14, 2025 am 12:11 AM

CommentairesaRecrucialInjavaScriptFormantAntaining ClarityandfosterringCollaboration.1) TheyHelpindebuggging, INBORDING et comprise compenser laveevolution.2) Utilisation de linecomments à la hauteur

Types de données JavaScript: une plongée profonde Types de données JavaScript: une plongée profonde Jun 13, 2025 am 12:10 AM

Javascripthasseveralprivevedatatypes: numéro, cha?ne, booléen, indéfini, nul, symbole, etbigint, et nonne-primitiveTypes lisebjectandarray.Cendurstanding theseiscrucialforwritingEfficient, bogue-freecode: 1)

JavaScript: Exploration des types de données pour un codage efficace JavaScript: Exploration des types de données pour un codage efficace Jun 20, 2025 am 12:46 AM

JavascripthSsevenfundamentalDatatypes: nombre, cha?ne, booléen, indéfini, nul, objet, andymbol.1) nombres usUseadouble-précisformat, utile

See all articles