Composants communs (par exemple <div>)
Tous les composants natifs du navigateur, tels que <div>, prennent en charge des props et des événements communs.
- Référence
- Composants communs (par exemple
<div>) - La fonction de rappel
ref - Objet d’événement React
- Gestionnaire
AnimationEvent - Gestionnaire
ClipboardEvent - Gestionnaire
CompositionEvent - Gestionnaire
DragEvent - Gestionnaire
FocusEvent - Gestionnaire
Event - Gestionnaire
InputEvent - Gestionnaire
KeyboardEvent - Gestionnaire
MouseEvent - Gestionnaire
PointerEvent - Gestionnaire
TouchEvent - Gestionnaire
TransitionEvent - Gestionnaire
UIEvent - Gestionnaire
WheelEvent
- Composants communs (par exemple
- Utilisation
Référence
Composants communs (par exemple <div>)
<div className="wrapper">Quelque chose</div>Voir d’autres exemples plus bas.
Props
Ces props spécifiques à React sont prises en charge pour tous les composants natifs :
-
children: un nœud React (un élément, une chaîne de caractères, un nombre, un portail, un nœud vide commenull,undefinedou un booléen, ou encore un tableau d’autres nœuds React). Elle spécifie le contenu à l’intérieur d’un composant. Lorsque vous utilisez du JSX, vous spécifiez généralement la propchildrende manière implicite en imbriquant les balises comme dans<div><span /></div>. -
dangerouslySetInnerHTML: un objet de la forme{ __html: '<p>du HTML</p>' }avec du HTML brut dans une chaîne de caractères. Il réécrit la propriétéinnerHTMLdu nœud DOM et affiche à l’intérieur le HTML fourni. Cette méthode doit être utilisée avec une extrême prudence ! Si le HTML fourni n’est pas fiable (par exemple s’il est basé sur des données de l’utilisateur), vous risquez d’introduire une vulnérabilité XSS. Apprenez-en davantage surdangerouslySetInnerHTML. -
ref: un objet ref provenant deuseRef, decreateRef, d’une fonction de rappelrefou d’une chaîne de caractères pour les refs historiques. Votre ref sera calée sur l’élément DOM pour ce nœud. Apprenez-en davantage sur la manipulation du DOM avec les refs. -
suppressContentEditableWarning: un booléen. S’il est àtrue, supprime l’avertissement que React affiche pour les éléments qui ont à la fois deschildrenetcontentEditable={true}(lesquels ne fonctionnent normalement pas ensemble). Vous pouvez l’utiliser si vous construisez une bibliothèque de champ de saisie qui gère manuellement le contenucontentEditable. -
suppressHydrationWarning: un booléen. Si vous utilisez le rendu côté serveur, il y a normalement un avertissement lorsque les rendus côté serveur et côté client produisent un contenu différent. Dans certains rares cas (comme avec les horodatages), il est très compliqué — voire impossible — de garantir une correspondance exacte. Si vous définissezsuppressHydrationWarningàtrue, React ne vous alertera plus en cas d’incohérence d’attributs ou de contenu pour cet élément. Ça ne fonctionne qu’à un seul niveau de profondeur, et c’est conçu comme une échappatoire. N’en n’abusez pas. Apprenez-en davantage sur la suppression des erreurs d’hydratation. -
style: un objet contenant des styles CSS, par exemple{ fontWeight: 'bold', margin: 20 }. À l’image de la propriétéstyledu DOM, les noms des propriétés CSS doivent être écrites encamelCase, commefontWeightau lieu defont-weight. Vous pouvez passer des valeurs sous forme de chaîne de caractères ou de nombre. Si vous utilisez un nombre, tel quewidth: 100, React ajoutera automatiquementpx(« pixels ») à la valeur, à moins qu’il ne s’agisse d’une propriété sans unité. Nous vous conseillons de n’utiliserstyleque pour les styles dynamiques, pour lesquels vous ne connaissez pas les valeurs de style à l’avance. Dans les autres cas, il est bien plus performant d’utiliser des classes CSS avecclassName. Apprenez-en davantage surclassNameetstyle.
Ces props standard du DOM sont également prises en charge pour tous les composants natifs :
accessKey: une chaîne de caractères. Elle spécifie un raccourci clavier pour l’élément. Son utilisation est généralement déconseillée.aria-*: les attributs ARIA vous permettent de spécifier les informations de l’arbre d’accessibilité pour cet élément. Consultez les attributs ARIA pour une référence exhaustive. En React, les noms des attributs ARIA sont exactement les mêmes qu’en HTML.autoCapitalize: une chaîne de caractères. Elle spécifie la façon dont le texte saisi bénéficie de conversions automatiques en majuscules (sur des claviers virtuels).className: une chaîne de caractères. Elle spécifie le nom de la classe CSS de l’élément. Apprenez-en davantage sur la façon d’appliquer des styles CSS.contentEditable: un booléen. S’il vauttrue, le navigateur permet à l’utilisateur de modifier directement le contenu de l’élément. C’est utilisé pour implémenter des bibliothèques d’éditeurs riches telle que Lexical. React avertit quand vous essayez de donner deschildrenReact à un élément qui dispose decontentEditable={true}, parce que React ne sera pas capable de mettre à jour son contenu après les modifications faites par l’utilisateur.data-*: des attributs sur-mesure qui vous permettent d’associer des données à l’élément, par exempledata-fruit="banane". Ils sont rarement utilisés en React car vous lisez généralement les données à partir des props ou de l’état.dir:'ltr'ou'rtl'. Ça spécifie la direction du texte de l’élément.draggable: un booléen. Il spécifie si l’élément peut être déplacé ou non. Ça fait partie de l’API HTML de glisser-déposer.enterKeyHint: une chaîne de caractères. Elle spécifie quelle action correspond à la touche entrée d’un clavier virtuel.htmlFor: une chaîne de caractères. Pour les<label>et les<output>, elle vous permet d’associer un libellé au contrôle. C’est équivalent à l’attribut HTMLfor. React utilise le nom de la propriété standard du DOM (htmlFor) plutôt que le nom de l’attribut HTML.hidden: un booléen ou une chaîne de caractères. Il spécifie si l’élément doit être caché ou non.id: une chaîne de caractères. Elle spécifie un identifiant unique pour cet élément, qui peut être utilisé afin de le trouver ultérieurement, ou pour le connecter à d’autres éléments. Générez cet identifiant avecuseIdpour éviter tout conflit avec des instances multiples d’un même composant.is: une chaîne de caractères. Lorsqu’elle est spécifiée, le composant se comporte comme un élément HTML personnalisé (custom element, NdT).inputMode: une chaîne de caractères. Elle définit le type de clavier virtuel à afficher (textuel, numérique ou téléphonique par exemple).itemProp: une chaîne de caractères. Elle spécifie la propriété associée pour les robots indexeurs de données riches structurées.lang: une chaîne de caractères. Elle spéficie la langue de l’élément.onAnimationEnd: un gestionnaire d’événementAnimationEvent. Cet événement est déclenché à la fin d’une animation CSS.onAnimationEndCapture: une version deonAnimationEndqui se déclenche durant la phase de capture.onAnimationIteration: un gestionnaire d’événementAnimationEvent. Cet événement est déclenché quand une itération d’une animation CSS se termine, et qu’une nouvelle commence.onAnimationIterationCapture: une version deonAnimationIterationqui se déclenche durant la phase de capture.onAnimationStart: un gestionnaire d’événementAnimationEvent. Cet événement est déclenché au démarrage d’une animation CSS.onAnimationStartCapture: une version deonAnimationStartqui se déclenche durant la phase de capture.onAuxClick: un gestionnaire d’événementMouseEvent. Cet événement est déclenché quand un bouton non principal du dispositif de pointage est pressé.onAuxClickCapture: une version deonAuxClickqui se déclenche durant la phase de capture.onBeforeInput: un gestionnaire d’événementInputEvent. Cet événement est déclenché avant que la valeur d’un élément modifiable ne soit modifiée. React n’utilise pas encore l’événement natifbeforeinput, et utilise un polyfill pour le simuler à l’aide d’autres événements.onBeforeInputCapture: une version deonBeforeInputqui se déclenche durant la phase de capture.onBlur: un gestionnaire d’événementFocusEvent. Cet événement est déclenché lorsqu’un élément perd le focus. Contrairement à l’événement natifblurdu navigateur, en React l’événementonBlurest propagé le long du DOM.onBlurCapture: une version deonBlurqui se déclenche durant la phase de capture.onClick: un gestionnaire d’événementMouseEvent. Cet événement est déclenché quand un bouton principal du dispositif de pointage est pressé.onClickCapture: une version deonClickqui se déclenche durant la phase de capture.onCompositionStart: un gestionnaire d’événementCompositionEvent. Cet événement est déclenché quand un système de composition de texte démarre une nouvelle session de composition.onCompositionStartCapture: une version deonCompositionStartqui se déclenche durant la phase de capture.onCompositionEnd: un gestionnaire d’événementCompositionEvent. Cet événement est déclenché quand un système de composition de texte termine ou annule une session de composition.onCompositionEndCapture: une version deonCompositionEndqui se déclenche durant la phase de capture.onCompositionUpdate: un gestionnaire d’événementCompositionEvent. Cet événement est déclenché quand un système de composition de texte reçoit un nouveau caractère.onCompositionUpdateCapture: une version deonCompositionUpdatequi se déclenche durant la phase de capture.onContextMenu: un gestionnaire d’événementMouseEvent. Cet événement est déclenché lorsque l’utilisateur tente d’ouvrir un menu contextuel.onContextMenuCapture: une version deonContextMenuqui se déclenche durant la phase de capture.onCopy: un gestionnaire d’événementClipboardEvent. Cet événement est déclenché quand l’utilisateur tente de copier quelque chose dans le presse-papier.onCopyCapture: une version deonCopyqui se déclenche durant la phase de capture.onCut: un gestionnaire d’événementClipboardEvent. Cet événement est déclenché quand l’utilisateur tente de couper quelque chose dans le presse-papier.onCutCapture: une version deonCutqui se déclenche durant la phase de capture.onDoubleClick: un gestionnaire d’événementMouseEvent. Cet événement est déclenché quand l’utilisateur double clique. Ça correspond à l’événementdblclickdu navigateur.onDoubleClickCapture: une version deonDoubleClickqui se déclenche durant la phase de capture.onDrag: un gestionnaire d’événementDragEvent. Cet événement est déclenché tant que l’utilisateur fait glisser quelque chose.onDragCapture: une version deonDragqui se déclenche durant la phase de capture.onDragEnd: un gestionnaire d’événementDragEvent. Cet événement est déclenché lorsque l’utilisateur arrête de glisser-déposer quelque chose.onDragEndCapture: une version deonDragEndqui se déclenche durant la phase de capture.onDragEnter: un gestionnaire d’événementDragEvent. Cet événement est déclenché quand le contenu en cours de glissement entre dans une cible de dépôt valide.onDragEnterCapture: une version deonDragEnterqui se déclenche durant la phase de capture.onDragOver: un gestionnaire d’événementDragEvent. Cet événement est déclenché sur une cible de dépôt valide tant que le contenu en cours de glissement se situe au-dessus. Vous devez appelere.preventDefault()ici pour autoriser le dépôt.onDragOverCapture: une version deonDragOverqui se déclenche durant la phase de capture.onDragStart: un gestionnaire d’événementDragEvent. Cet événement est déclenché lorsque l’utilisateur commence le glisser-déposer d’un élément.onDragStartCapture: une version deonDragStartqui se déclenche durant la phase de capture.onDrop: un gestionnaire d’événementDragEventhandler. Cet événement est déclenché lorsque quelque chose a été glissé-déposé sur une cible valide.onDropCapture: une version deonDropqui se déclenche durant la phase de capture.onFocus: un gestionnaire d’événementFocusEvent. Cet événement est déclenché lorsqu’un élément reçoit le focus. Contrairement à l’événement natiffocusdu navigateur, en React l’événementonFocusest propagé le long du DOM.onFocusCapture: une version deonFocusqui se déclenche durant la phase de capture.onGotPointerCapture: un gestionnaire d’événementPointerEvent. Cet événement est déclenché lorsqu’un élément capture programmatiquement le pointeur.onGotPointerCaptureCapture: une version deonGotPointerCapturequi se déclenche durant la phase de capture.onKeyDown: un gestionnaire d’événementKeyboardEventhandler. Cet événement est déclenché quand une touche est pressée.onKeyDownCapture: une version deonKeyDownqui se déclenche durant la phase de capture.onKeyPress: un gestionnaire d’événementKeyboardEvent. Il est déprécié. PrivilégiezonKeyDownouonBeforeInput.onKeyPressCapture: une version deonKeyPressqui se déclenche durant la phase de capture.onKeyUp: un gestionnaire d’événementKeyboardEvent. Cet événement est déclenché quand une touche est relâchée.onKeyUpCapture: une version deonKeyUpqui se déclenche durant la phase de capture.onLostPointerCapture: un gestionnaire d’événementPointerEvent. Cet événement est déclenché quand un élément cesse de capturer le pointeur.onLostPointerCaptureCapture: une version deonLostPointerCapturequi se déclenche durant la phase de capture.onMouseDown: un gestionnaire d’événementMouseEvent. Cet événement est déclenché quand un bouton du dispositif de pointage est pressé.onMouseDownCapture: une version deonMouseDownqui se déclenche durant la phase de capture.onMouseEnter: un gestionnaire d’événementMouseEvent. Cet événement est déclenché lorsque le pointeur arrive dans un élément. Il n’y a pas de phase de capture. Au lieu de ça,onMouseLeaveetonMouseEnterse propagent de l’élément que l’on quitte à celui sur lequel on arrive.onMouseLeave: un gestionnaire d’événementMouseEvent. Cet événement est déclenché lorsque le pointeur quitte un élément. Il n’y a pas de phase de capture. Au lieu de ça,onMouseLeaveetonMouseEnterse propagent de l’élément que l’on quitte à celui sur lequel on arrive.onMouseMove: un gestionnaire d’événementMouseEvent. Cet événement est déclenché lorsque les coordonnées du pointeur changent.onMouseMoveCapture: une version deonMouseMovequi se déclenche durant la phase de capture.onMouseOut: un gestionnaire d’événementMouseEvent. Cet événement est déclenché lorsque le pointeur quitte un élément ou s’il entre dans un élément enfant.onMouseOutCapture: une version deonMouseOutqui se déclenche durant la phase de capture.onMouseUp: un gestionnaire d’événementMouseEvent. Cet événement est déclenché quand un bouton du dispositif de pointage est relâché.onMouseUpCapture: une version deonMouseUpqui se déclenche durant la phase de capture.onPaste: un gestionnaire d’événementClipboardEvent. Cet événement est déclenché lorsque l’utilisateur tente de coller quelque chose depuis le presse-papier.onPasteCapture: une version deonPastequi se déclenche durant la phase de capture.onPointerCancel: un gestionnaire d’événementPointerEvent. Cet événement est déclenché lorque le navigateur annule une interaction du dispositif de pointage.onPointerCancelCapture: une version deonPointerCancelqui se déclenche durant la phase de capture.onPointerDown: un gestionnaire d’événementPointerEvent. Cet événement est déclenché quand un pointeur devient actif.onPointerDownCapture: une version deonPointerDownqui se déclenche durant la phase de capture.onPointerEnter: un gestionnaire d’événementPointerEvent. Cet événement est déclenché quand un pointeur entre dans un élément. Il n’y a pas de phase de capture. Au lieu de ça,onPointerLeaveetonPointerEnterse propagent de l’élément que l’on quitte à celui sur lequel on arrive.onPointerLeave: un gestionnaire d’événementPointerEvent. Cet événement est déclenché quand un pointeur quitte un élément. Il n’y a pas de phase de capture. Au lieu de ça,onPointerLeaveetonPointerEnterse propagent de l’élément que l’on quitte à celui sur lequel on arrive.onPointerMove: un gestionnaire d’événementPointerEvent. Cet événement est déclenché lorsque les coordonnées d’un pointeur changent.onPointerMoveCapture: une version deonPointerMovequi se déclenche durant la phase de capture.onPointerOut: un gestionnaire d’événementPointerEvent. Cet événement est déclenché lorsqu’un pointeur quitte un élément, si l’interaction du pointeur est annulée, ainsi que pour quelques autres raisons.onPointerOutCapture: une version deonPointerOutqui se déclenche durant la phase de capture.onPointerUp: un gestionnaire d’événementPointerEvent. Cet événement est déclenché lorsqu’un pointeur n’est plus actif.onPointerUpCapture: une version deonPointerUpqui se déclenche durant la phase de capture.onScroll: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque l’utilisateur fait défiler le contenu d’un élément. Cet événement n’est pas propagé.onScrollCapture: une version deonScrollqui se déclenche durant la phase de capture.onSelect: un gestionnaire d’événementEvent. Cet événement est déclenché après que la sélection dans un élément éditable tel qu’un champ de saisie a changé. React étend l’événementonSelectpour qu’il fonctionne aussi avec les élémentscontentEditable={true}. React le modifie également pour se déclencher lors d’une sélection vide et lors de modifications (ce qui peut affecter la sélection).onSelectCapture: une version deonSelectqui se déclenche durant la phase de capture.onTouchCancel: un gestionnaire d’événementTouchEvent. Cet événement est déclenché lorsque le navigateur annule une interaction tactile.onTouchCancelCapture: une version deonTouchCancelqui se déclenche durant la phase de capture.onTouchEnd: un gestionnaire d’événementTouchEvent. Cet événement est déclenché lorsqu’au moins un pointeur tactile est enlevé.onTouchEndCapture: une version deonTouchEndqui se déclenche durant la phase de capture.onTouchMove: un gestionnaire d’événementTouchEvent. Cet événement est déclenché quand au moins un pointeur tactile est déplacé.onTouchMoveCapture: une version deonTouchMovequi se déclenche durant la phase de capture.onTouchStart: un gestionnaire d’événementTouchEvent. Cet événement est déclenché quand au moins un pointeur tactile est détecté.onTouchStartCapture: une version deonTouchStartqui se déclenche durant la phase de capture.onTransitionEnd: un gestionnaire d’événementTransitionEvent. Cet événement est déclenché quand une transition CSS se termine.onTransitionEndCapture: une version deonTransitionEndqui se déclenche durant la phase de capture.onWheel: un gestionnaire d’événementWheelEvent. Cet événement est déclenché lorsque l’utilisateur fait tourner la molette du dispositif de pointage.onWheelCapture: une version deonWheelqui se déclenche durant la phase de capture.role: une chaîne de caractères. Elle explicite le rôle de l’élément pour les technologies d’assistance.slot: une chaîne de caractères. Elle spécifie le nom de l’emplacement (slot, NdT) lorsque le shadow DOM est utilisé. En React, on obtient un résultat équivalent en passant du JSX dans les props, comme par exemple<Layout left={<Sidebar />} right={<Content />} />.spellCheck: un booléen ounull. Lorsqu’il est défini explicitement àtrueoufalse, la vérification orthographique est activée ou désactivée.tabIndex: un nombre. Celui-ci surcharge le comportement par défaut de la touche Tab. Évitez d’utiliser d’autres valeurs que-1et0.title: une chaîne de caractères. Elle spécifie le texte pour l’infobulle de l’élément.translate:'yes'ou'no'. Le contenu de l’élément n’est pas sujet à traduction lorsqu’il vaut'no'.
Vous pouvez également passer des attributs personnalisés comme props, par exemple mycustomprop="uneValeur". Ça peut être utile à l’intégration de bibliothèques tierces. Le nom de l’attribut personnalisé doit être en minuscules et ne doit pas commencer par on. La valeur sera convertie en chaîne de caractères. Si vous passez null ou undefined, l’attribut personnalisé sera retiré.
Ces événements sont déclenchés pour les éléments <form> :
onReset: un gestionnaire d’événementEvent. Cet événement est déclenché quand un formulaire est réinitialisé (ramené à ses valeurs définies par le code HTML).onResetCapture: une version deonResetqui se déclenche durant la phase de capture.onSubmit: un gestionnaire d’événementEvent. Cet événement est déclenché quand un formulaire est soumis pour traitement.onSubmitCapture: une version deonSubmitqui se déclenche durant la phase de capture.
Ces événements sont déclenchés pour les éléments <dialog>. Contrairement aux événements du navigateur, ceux en React sont propagés le long du DOM :
onCancel: un gestionnaire d’événementEvent. Cet événement est déclenché quand l’utilisateur tente de fermer la boîte de dialogue.onCancelCapture: une version deonCancelqui se déclenche durant la phase de capture.onClose: un gestionnaire d’événementEvent. Cet événement est déclenché quand une boîte de dialogue a terminé de se fermer.onCloseCapture: une version deonClosequi se déclenche durant la phase de capture.
Ces événements sont déclenchés pour les éléments <details>. Contrairement aux événements du navigateur, ceux en React sont propagés le long du DOM :
onToggle: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque l’utilisateur fait basculer les détails.onToggleCapture: une version deonTogglequi se déclenche durant la phase de capture.
Ces événements sont déclenchés pour les éléments <img>, <iframe>, <object>, <embed>, <link>, et <image> SVG. Contrairement aux événements du navigateur, ceux en React sont propagés le long du DOM :
onLoad: un gestionnaire d’événementEvent. Cet événement est déclenché quand la ressouce a été complètement chargée.onLoadCapture: une version deonLoadqui se déclenche durant la phase de capture.onError: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque la ressource n’a pas pu être chargée.onErrorCapture: une version deonErrorqui se déclenche durant la phase de capture.
Ces événements sont déclenchés pour les ressources comme <audio> et <video>. Contrairement aux événements du navigateur, ceux en React sont propagés le long du DOM :
onAbort: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque la ressource n’a pas été chargée complétement, sans que ça provienne d’une erreur.onAbortCapture: une version deonAbortqui se déclenche durant la phase de capture.onCanPlay: un gestionnaire d’événementEvent. Cet événement est déclenché lorsqu’il y a suffisament de données pour démarrer la lecture, mais pas suffisament pour aller jusqu’à la fin sans mise en mémoire tampon (buffering).onCanPlayCapture: une version deonCanPlayqui se déclenche durant la phase de capture.onCanPlayThrough: un gestionnaire d’événementEvent. Cet événement est déclenché quand il y a suffisamment de données pour qu’il soit possible de commencer la lecture sans mise en mémoire tampon jusqu’à la fin.onCanPlayThroughCapture: une version deonCanPlayThroughqui se déclenche durant la phase de capture.onDurationChange: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque la durée du média a changé.onDurationChangeCapture: une version deonDurationChangequi se déclenche durant la phase de capture.onEmptied: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque le média est devenu vide (purge du flux par exemple).onEmptiedCapture: une version deonEmptiedqui se déclenche durant la phase de capture.onEncrypted: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque le navigateur rencontre un média chiffré.onEncryptedCapture: une version deonEncryptedqui se déclenche durant la phase de capture.onEnded: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque la lecture s’arrête car il n’y a plus rien à jouer.onEndedCapture: une version deonEndedqui se déclenche durant la phase de capture.onError: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque la ressource n’a pas pu être chargée.onErrorCapture: une version deonErrorqui se déclenche durant la phase de capture.onLoadedData: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque le segment de lecture courant a été chargé.onLoadedDataCapture: une version deonLoadedDataqui se déclenche durant la phase de capture.onLoadedMetadata: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque les métadonnées ont été chargées.onLoadedMetadataCapture: une version deonLoadedMetadataqui se déclenche durant la phase de capture.onLoadStart: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque le navigateur commence à charger une ressource.onLoadStartCapture: une version deonLoadStartqui se déclenche durant la phase de capture.onPause: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque la lecture du média est mise en pause.onPauseCapture: une version deonPausequi se déclenche durant la phase de capture.onPlay: un gestionnaire d’événementEvent. Cet événement est déclenché le média n’est plus en pause.onPlayCapture: une version deonPlayqui se déclenche durant la phase de capture.onPlaying: un gestionnaire d’événementEvent. Cet événement est déclenché le média commence ou recommence sa lecture.onPlayingCapture: une version deonPlayingqui se déclenche durant la phase de capture.onProgress: un gestionnaire d’événementEvent. Cet événement est déclenché périodiquement pendant le chargement de la ressource.onProgressCapture: une version deonProgressqui se déclenche durant la phase de capture.onRateChange: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque le débit de lecture change.onRateChangeCapture: une version deonRateChangequi se déclenche durant la phase de captureonResize: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque les dimensions de la vidéo changent.onResizeCapture: une version deonResizequi se déclenche durant la phase de capture.onSeeked: un gestionnaire d’événementEvent. Cet événement est déclenché lorsqu’un déplacement du pointeur de lecture se termine.onSeekedCapture: une version deonSeekedqui se déclenche durant la phase de capture.onSeeking: un gestionnaire d’événementEvent. Cet événement est déclenché lorsqu’un déplacement du pointeur de lecture commence.onSeekingCapture: une version deonSeekingqui se déclenche durant la phase de capture.onStalled: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque le navigateur est en attente de données, mais que celles-ci ne se chargent pas.onStalledCapture: une version deonStalledqui se déclenche durant la phase de capture.onSuspend: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque le chargement de la ressource est suspendu.onSuspendCapture: une version deonSuspendqui se déclenche durant la phase de capture.onTimeUpdate: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque le temps de lecture est mis à jour.onTimeUpdateCapture: une version deonTimeUpdatequi se déclenche durant la phase de capture.onVolumeChange: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque le volume audio a changé.onVolumeChangeCapture: une version deonVolumeChangequi se déclenche durant la phase de capture.onWaiting: un gestionnaire d’événementEvent. Cet événement est déclenché lorsque la lecture s’est arrêtée suite à un manque de données.onWaitingCapture: une version deonWaitingqui se déclenche durant la phase de capture.
Limitations
- Vous ne pouvez pas passer à la fois
childrenetdangerouslySetInnerHTML. - Certains événements (tels que
onAbortetonLoad) ne sont pas propagés le long du DOM par le navigateur, mais le sont en React.
La fonction de rappel ref
Au lieu d’un objet ref (tel que celui renvoyé par useRef), vous pouvez passer une fonction à l’attribut ref.
<div ref={(node) => console.log(node)} />Voir un exemple d’utilisation de la fonction de rappel ref.
Quand le nœud DOM <div> sera ajouté à l’écran, React appellera votre fonction ref avec le node DOM comme argument. Quand ce nœud DOM <div> sera retiré, React apppellera votre fonction ref avec null.
React appellera aussi votre fonction ref à chaque fois que vous passez une fonction ref différente. Dans l’exemple précédent, (node) => { ... } est une fonction différente à chaque rendu. Lorsque votre composant refait un rendu, la fonction précédente est appelée avec l’argument null, et la fonction à jour est appelée avec le nœud DOM.
Paramètres
node: un nœud DOM ounull. React vous donnera le nœud DOM lorsque la ref sera attachée, etnulllorsqu’elle sera détachée. À moins de passer la même référence de fonctionrefà chaque rendu, la fonction de rappel sera détachée et réattachée à chaque rendu du composant.
Valeur renvoyée
La fonction ref ne renvoie rien.
Objet d’événement React
Vos gestionnaires d’événements recevront un objet d’événement React. On parle aussi parfois « d’événement synthétique » React.
<button onClick={e => {
console.log(e); // Objet d’événement React
}} />Il respecte le même standard que les événements DOM natifs, mais corrige certaines incohérences d’implémentation d’un navigateurs à l’autr.
Certains événements React ne correspondent pas directement aux événements natifs des navigateurs. Dans onMouseLeave par exemple, e.nativeEvent référence un événement mouseout. La correspondance spécifique ne fait pas partie de l’API publique et pourrait changer à l’avenir. Si, pour certaines raisons, vous avez besoin de l’événement sous-jacent du navigateur, vous le trouverez dans dans e.nativeEvent.
Propriétés
Les objets d’événements React implémentent certaines propriétés standard d’Event :
bubbles: un booléen. Il indique si l’événement se propage le long du DOM.cancelable: un booléen. Il indique si l’événement peut être annulé.currentTarget: un nœud DOM. Il renvoie le nœud auquel le gestionnaire d’événement est attaché dans l’arbre React.defaultPrevented: un booléen. Il indique si la fonctionpreventDefaulta été appelée.eventPhase: un nombre. Il indique la phase dans laquelle se situe actuellement l’événement.isTrusted: un booléen. Il indique si l’événement a été initié par l’utilisateur.target: un nœud DOM. Il renvoie le nœud sur lequel l’événement a été déclenché (qui peut être un descendant lointain).timeStamp: un nombre. Il indique le moment où l’événement a été déclenché.
Les objets d’événements React proposent également ces propriétés :
nativeEvent: unEventDOM. Il s’agit de l’objet d’événement originel du navigateur.
Méthodes
Les objets d’événements React implémentent certaines méthodes standard d’Event :
preventDefault(): empêche l’action par défaut du navigateur pour cet événement.stopPropagation(): interrompt la propagation de cet événement le long de l’arbre React.
Les objets d’événements React proposent également ces méthodes :
isDefaultPrevented(): renvoie une valeur booléenne indiquant sipreventDefaulta été appelée.isPropagationStopped(): renvoie une valeur booléenne indiquant sistopPropagationa été appelée.persist(): inutile pour React DOM. Avec React Native, vous pouvez l’appeler pour lire les propriétés de l’événement après son exécution.isPersistent(): inutile pour React DOM. Avec React Native, indique sipersista été appelée.
Limitations
- Les valeurs de
currentTarget,eventPhase,targetettyperéflètent les valeurs attendues par votre code React. Sous le capot, React attache les gestionnaires d’événements à la racine, mais ce n’est pas reflété par les objets d’événements React. Par exemple,e.currentTargetpeut différer due.nativeEvent.currentTargetsous-jacent. Pour les événements simulés,e.type(type de l’événement React) peut aussi différer dee.nativeEvent.type(type sous-jacent).
Gestionnaire AnimationEvent
Un type de gestionnaire d’événement pour les événements des animations CSS .
<div
onAnimationStart={e => console.log('onAnimationStart')}
onAnimationIteration={e => console.log('onAnimationIteration')}
onAnimationEnd={e => console.log('onAnimationEnd')}
/>Paramètres
e: un objet d’événement React avec ces propriétés spécifiques àAnimationEvent:
Gestionnaire ClipboardEvent
Un type de gestionnaire d’événement pour les événements de l’API Clipboard.
<input
onCopy={e => console.log('onCopy')}
onCut={e => console.log('onCut')}
onPaste={e => console.log('onPaste')}
/>Paramètres
-
e: un objet d’événement React avec ces propriétés spécifiques àClipboardEvent:
Gestionnaire CompositionEvent
Un type de gestionnaire d’événement pour les événements des systèmes de composition de texte (IME pour Input Method Editor, NdT).
<input
onCompositionStart={e => console.log('onCompositionStart')}
onCompositionUpdate={e => console.log('onCompositionUpdate')}
onCompositionEnd={e => console.log('onCompositionEnd')}
/>Paramètres
e: un objet d’événement React avec ces propriétés spécifiques àCompositionEvent:
Gestionnaire DragEvent
Un type de gestionnaire d’événement pour les événements de l’API HTML de glisser-déposer.
<>
<div
draggable={true}
onDragStart={e => console.log('onDragStart')}
onDragEnd={e => console.log('onDragEnd')}
>
Source pour le glissement
</div>
<div
onDragEnter={e => console.log('onDragEnter')}
onDragLeave={e => console.log('onDragLeave')}
onDragOver={e => { e.preventDefault(); console.log('onDragOver'); }}
onDrop={e => console.log('onDrop')}
>
Cible pour le dépôt
</div>
</>Paramètres
-
e: un objet d’événement React avec ces propriétés spécifiques àDragEvent:Il inclut également les propriétés héritées de
MouseEvent:altKeybuttonbuttonsctrlKeyclientXclientYgetModifierState(key)metaKeymovementXmovementYpageXpageYrelatedTargetscreenXscreenYshiftKey
Il inclut enfin les propriétés héritées de
UIEvent:
Gestionnaire FocusEvent
Un type de gestionnaire d’événement pour les événements de focus.
<input
onFocus={e => console.log('onFocus')}
onBlur={e => console.log('onBlur')}
/>Paramètres
-
e: un objet d’événement React avec ces propriétés spécifiques àFocusEvent:Il inclut également les propriétés héritées de
UIEvent:
Gestionnaire Event
Un gestionnaire d’événement pour les événements génériques.
Paramètres
e: un objet d’événement React sans propriété complémentaire.
Gestionnaire InputEvent
Un type de gestionnaire d’événement pour les événements onBeforeInput.
<input onBeforeInput={e => console.log('onBeforeInput')} />Paramètres
e: un objet d’événement React avec ces propriétés spécifiques àInputEvent:
Gestionnaire KeyboardEvent
Un type de gestionnaire d’événement pour les événements liés au clavier.
<input
onKeyDown={e => console.log('onKeyDown')}
onKeyUp={e => console.log('onKeyUp')}
/>Paramètres
-
e: un objet d’événement React avec ces propriétés spécifiques àKeyboardEvent:altKeycharCodecodectrlKeygetModifierState(key)keykeyCodelocalemetaKeylocationrepeatshiftKeywhich
Il inclut également les propriétés héritées de
UIEvent:
Gestionnaire MouseEvent
Un type de gestionnaire d’événement pour les événements liés à la souris.
<div
onClick={e => console.log('onClick')}
onMouseEnter={e => console.log('onMouseEnter')}
onMouseOver={e => console.log('onMouseOver')}
onMouseDown={e => console.log('onMouseDown')}
onMouseUp={e => console.log('onMouseUp')}
onMouseLeave={e => console.log('onMouseLeave')}
/>Paramètres
-
e: un objet d’événement React avec ces propriétés spécifiques àMouseEvent:altKeybuttonbuttonsctrlKeyclientXclientYgetModifierState(key)metaKeymovementXmovementYpageXpageYrelatedTargetscreenXscreenYshiftKey
Il inclut également les propriétés héritées de
UIEvent:
Gestionnaire PointerEvent
Un type de gestionnaire d’événement pour les événements liés aux pointeurs.
<div
onPointerEnter={e => console.log('onPointerEnter')}
onPointerMove={e => console.log('onPointerMove')}
onPointerDown={e => console.log('onPointerDown')}
onPointerUp={e => console.log('onPointerUp')}
onPointerLeave={e => console.log('onPointerLeave')}
/>Paramètres
-
e: un objet d’événement React avec ces propriétés spécifiques àPointerEvent:Il inclut également les propriétés héritées de
MouseEvent:altKeybuttonbuttonsctrlKeyclientXclientYgetModifierState(key)metaKeymovementXmovementYpageXpageYrelatedTargetscreenXscreenYshiftKey
Il inclut enfin les propriétés héritées de
UIEvent:
Gestionnaire TouchEvent
Un type de gestionnaire d’événement pour les événements tactiles.
<div
onTouchStart={e => console.log('onTouchStart')}
onTouchMove={e => console.log('onTouchMove')}
onTouchEnd={e => console.log('onTouchEnd')}
onTouchCancel={e => console.log('onTouchCancel')}
/>Paramètres
-
e: un objet d’événement React avec ces propriétés spécifiques àTouchEvent:Il inclut également les propriétés héritées de
UIEvent:
Gestionnaire TransitionEvent
Un type de gestionnaire d’événement pour les événements de transitions CSS.
<div
onTransitionEnd={e => console.log('onTransitionEnd')}
/>Paramètres
e: un objet d’événement React avec ces propriétés spécifiques àTransitionEvent:
Gestionnaire UIEvent
Un type de gestionnaire d’événement pour les événements génériques de l’interface utilisateur.
<div
onScroll={e => console.log('onScroll')}
/>Paramètres
e: un objet d’événement React avec ces propriétés spécifiques àUIEvent:
Gestionnaire WheelEvent
Un type de gestionnaire d’événement pour les événements onWheel (molette de souris).
<div
onWheel={e => console.log('onWheel')}
/>Paramètres
-
e: un objet d’événement React avec ces propriétés spécifiques àWheelEvent:Il inclut également les propriétés héritées de
MouseEvent:altKeybuttonbuttonsctrlKeyclientXclientYgetModifierState(key)metaKeymovementXmovementYpageXpageYrelatedTargetscreenXscreenYshiftKey
Il inclut enfin les propriétés héritées de
UIEvent:
Utilisation
Appliquer les styles CSS
En React, vous spécifiez une classe CSS avec className. Ça fonctionne comme l’attribut HTML class :
<img className="avatar" />Vous écrivez ensuite vos règles CSS dans un fichier CSS séparé :
/* Dans votre CSS */
.avatar {
border-radius: 50%;
}React n’impose aucune façon particulière d’ajouter des fichiers CSS. Dans les cas les plus simples, vous ajouterez une balise <link> dans votre HTML. Si vous utilisez un outil de build ou un framework, consultez sa documentation pour connaître la façon d’ajouter un fichier CSS à votre projet.
Parfois, les valeurs de style que vous souhaitez utiliser dépendent de vos données. Utilisez l’attribut style pour passer certains styles dynamiquement :
<img
className="avatar"
style={{
width: user.imageSize,
height: user.imageSize
}}
/>Dans l’exemple ci-dessus, style={{}} n’est pas une syntaxe particulière, mais un objet classique {} à l’intérieur des accolades JSX style={ }. Nous vous conseillons de n’utiliser l’attribut style que si vos styles dépendent de variables JavaScript.
export default function Avatar({ user }) { return ( <img src={user.imageUrl} alt={'Photo de ' + user.name} className="avatar" style={{ width: user.imageSize, height: user.imageSize }} /> ); }
En détail
Pour conditionner l’application de classes CSS, vous devez produire vous-même la chaîne de caractères className en utilisant JavaScript.
Par exemple, className={'row ' + (isSelected ? 'selected': '')} produira soit className="row", soit className="row selected", selon que isSelected est à true ou non.
Pour faciliter la lecture, vous pouvez utiliser une petite bibliothèque telle que classnames :
import cn from 'classnames';
function Row({ isSelected }) {
return (
<div className={cn('row', isSelected && 'selected')}>
...
</div>
);
}C’est particulièrement utile si vous avez plusieurs classes conditionnelles :
import cn from 'classnames';
function Row({ isSelected, size }) {
return (
<div className={cn('row', {
selected: isSelected,
large: size === 'large',
small: size === 'small',
})}>
...
</div>
);
}Manipuler un nœud DOM avec une ref
Vous aurez parfois besoin de récupérer le nœud DOM du navigateur associé à une balise en JSX. Si par exemple vous voulez activer un <input> après qu’un bouton a été cliqué, vous aurez besoin d’appeler focus() sur le nœud DOM <input> du navigateur.
Pour obtenir le nœud DOM du navigateur correspondant à une balise, déclarez une ref et passez-la à l’attribut ref de cette balise :
import { useRef } from 'react';
export default function Form() {
const inputRef = useRef(null);
// ...
return (
<input ref={inputRef} />
// ...React référencera le nœud DOM depuis la propriété inputRef.current une fois le DOM mis à jour.
import { useRef } from 'react'; export default function Form() { const inputRef = useRef(null); function handleClick() { inputRef.current.focus(); } return ( <> <input ref={inputRef} /> <button onClick={handleClick}> Activer le champ </button> </> ); }
Apprenez-en davantage sur la manipulation du DOM avec les refs et découvrez d’autres exemples.
Pour des utilisations plus avancées, l’attribut ref accepte églament une fonction de rappel.
Définir le HTML interne (mais c’est risqué)
Vous pouvez passer une chaîne de caractères contenant du HTML brut à un élément comme suit :
const markup = { __html: '<p>du HTML brut</p>' };
return <div dangerouslySetInnerHTML={markup} />;C’est dangereux. Comme avec la propriété innerHTML du DOM, vous devez faire preuve d’une extrême prudence ! À moins que le balisage ne provienne d’une source parfaitement fiable, il est facile d’introduire une vulnérabilité XSS de cette façon.
Par exemple, si vous utilisez une bibliothèque qui convertit du Markdown en HTML, que vous êtes sûr·e que son parser ne contient pas de bug et que l’utilisateur ne voit que ses propres données, vous pouvez afficher le HTML généré de cette façon :
import { Remarkable } from 'remarkable'; const md = new Remarkable(); function renderMarkdownToHTML(markdown) { // C’est fiable UNIQUEMENT parce que le HTML généré // n’est affiché qu’à l’utilisateur qui l’a saisi, // et parce que vous avez confiance dans le fait que // ce parser de Markdown ne contient pas de bugs. const renderedHTML = md.render(markdown); return {__html: renderedHTML}; } export default function MarkdownPreview({ markdown }) { const markup = renderMarkdownToHTML(markdown); return <div dangerouslySetInnerHTML={markup} />; }
Pour comprendre pourquoi l’injection d’un contenu HTML quelconque est dangereuse, remplacez le code plus haut par celui-ci :
const post = {
// Imaginez que ce contenu soit stocké en base de données.
content: `<img src="" onerror='alert("vous avez été hacké")'>`
};
export default function MarkdownPreview() {
// 🔴 FAILLE DE SÉCURITÉ : passage d’une saisie non fiable à dangerouslySetInnerHTML
const markup = { __html: post.content };
return <div dangerouslySetInnerHTML={markup} />;
}Le code intégré dans le HTML sera exécuté. Un hacker pourrait utiliser cette faille de sécurité pour voler des informations à l’utilisateur ou effectuer certaines actions en son nom. Utilisez seulement dangerouslySetInnerHTML avec des données de confiance, dûment assainies.
Gérer des événements liés à la souris
Cet exemple montre quelques événements liés à la souris courants et la chronologie de leurs déclenchements.
export default function MouseExample() { return ( <div onMouseEnter={e => console.log('onMouseEnter (parent)')} onMouseLeave={e => console.log('onMouseLeave (parent)')} > <button onClick={e => console.log('onClick (premier bouton)')} onMouseDown={e => console.log('onMouseDown (premier bouton)')} onMouseEnter={e => console.log('onMouseEnter (premier bouton)')} onMouseLeave={e => console.log('onMouseLeave (premier bouton)')} onMouseOver={e => console.log('onMouseOver (premier bouton)')} onMouseUp={e => console.log('onMouseUp (premier bouton)')} > Premier bouton </button> <button onClick={e => console.log('onClick (deuxième bouton)')} onMouseDown={e => console.log('onMouseDown (deuxième bouton)')} onMouseEnter={e => console.log('onMouseEnter (deuxième bouton)')} onMouseLeave={e => console.log('onMouseLeave (deuxième bouton)')} onMouseOver={e => console.log('onMouseOver (deuxième bouton)')} onMouseUp={e => console.log('onMouseUp (deuxième bouton)')} > Deuxième bouton </button> </div> ); }
Gérer des événements du pointeur
Cet exemple montre quelques événements liés aux pointeurs courants et permet de suivre la chronologie de leurs déclenchements.
export default function PointerExample() { return ( <div onPointerEnter={e => console.log('onPointerEnter (parent)')} onPointerLeave={e => console.log('onPointerLeave (parent)')} style={{ padding: 20, backgroundColor: '#ddd' }} > <div onPointerDown={e => console.log('onPointerDown (premier enfant)')} onPointerEnter={e => console.log('onPointerEnter (premier enfant)')} onPointerLeave={e => console.log('onPointerLeave (premier enfant)')} onPointerMove={e => console.log('onPointerMove (premier enfant)')} onPointerUp={e => console.log('onPointerUp (premier enfant)')} style={{ padding: 20, backgroundColor: 'lightyellow' }} > Premier enfant </div> <div onPointerDown={e => console.log('onPointerDown (deuxième enfant)')} onPointerEnter={e => console.log('onPointerEnter (deuxième enfant)')} onPointerLeave={e => console.log('onPointerLeave (deuxième enfant)')} onPointerMove={e => console.log('onPointerMove (deuxième enfant)')} onPointerUp={e => console.log('onPointerUp (deuxième enfant)')} style={{ padding: 20, backgroundColor: 'lightblue' }} > Deuxième enfant </div> </div> ); }
Gérer les événéments de focus
Avec React, les événements de focus se propagent le long du DOM. Vous pouvez utiliser currentTarget et relatedTarget pour savoir si les événements de prise de focus ou de perte de focus proviennent de l’extérieur de l’élément parent. L’exemple montre comment détecter le focus d’un enfant, celui de l’élément parent, et comment détecter l’entrée ou la sortie du focus sur l’ensemble du sous-arbre.
export default function FocusExample() { return ( <div tabIndex={1} onFocus={(e) => { if (e.currentTarget === e.target) { console.log('focus sur le parent'); } else { console.log("focus sur l’enfant", e.target.name); } if (!e.currentTarget.contains(e.relatedTarget)) { // N’est pas déclenché quand on passe d’un enfant à l’autre console.log('focus entré au niveau du parent'); } }} onBlur={(e) => { if (e.currentTarget === e.target) { console.log('perte du focus par le parent'); } else { console.log("perte du focus par l’enfant", e.target.name); } if (!e.currentTarget.contains(e.relatedTarget)) { // N’est pas déclenché quand on passe d’un enfant à l’autre console.log('le focus quitte le parent'); } }} > <label> Prénom : <input name="firstName" /> </label> <label> Nom : <input name="lastName" /> </label> </div> ); }
Gérer les événements liés au clavier
Cet exemple montre quelques événements liés au clavier courants et la chronologie de leurs déclenchements.
export default function KeyboardExample() { return ( <label> Prénom : <input name="firstName" onKeyDown={e => console.log('onKeyDown:', e.key, e.code)} onKeyUp={e => console.log('onKeyUp:', e.key, e.code)} /> </label> ); }