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 vaut- true, 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 des- childrenReact à un élément qui dispose de- contentEditable={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 exemple- data-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 HTML- for. 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 avec- useIdpour é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énement- AnimationEvent. Cet événement est déclenché à la fin d’une animation CSS.
- onAnimationEndCapture: une version de- onAnimationEndqui se déclenche durant la phase de capture.
- onAnimationIteration: un gestionnaire d’événement- AnimationEvent. Cet événement est déclenché quand une itération d’une animation CSS se termine, et qu’une nouvelle commence.
- onAnimationIterationCapture: une version de- onAnimationIterationqui se déclenche durant la phase de capture.
- onAnimationStart: un gestionnaire d’événement- AnimationEvent. Cet événement est déclenché au démarrage d’une animation CSS.
- onAnimationStartCapture: une version de- onAnimationStartqui se déclenche durant la phase de capture.
- onAuxClick: un gestionnaire d’événement- MouseEvent. Cet événement est déclenché quand un bouton non principal du dispositif de pointage est pressé.
- onAuxClickCapture: une version de- onAuxClickqui se déclenche durant la phase de capture.
- onBeforeInput: un gestionnaire d’événement- InputEvent. 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 natif- beforeinput, et utilise un polyfill pour le simuler à l’aide d’autres événements.
- onBeforeInputCapture: une version de- onBeforeInputqui se déclenche durant la phase de capture.
- onBlur: un gestionnaire d’événement- FocusEvent. Cet événement est déclenché lorsqu’un élément perd le focus. Contrairement à l’événement natif- blurdu navigateur, en React l’événement- onBlurest propagé le long du DOM.
- onBlurCapture: une version de- onBlurqui se déclenche durant la phase de capture.
- onClick: un gestionnaire d’événement- MouseEvent. Cet événement est déclenché quand un bouton principal du dispositif de pointage est pressé.
- onClickCapture: une version de- onClickqui se déclenche durant la phase de capture.
- onCompositionStart: un gestionnaire d’événement- CompositionEvent. Cet événement est déclenché quand un système de composition de texte démarre une nouvelle session de composition.
- onCompositionStartCapture: une version de- onCompositionStartqui se déclenche durant la phase de capture.
- onCompositionEnd: un gestionnaire d’événement- CompositionEvent. Cet événement est déclenché quand un système de composition de texte termine ou annule une session de composition.
- onCompositionEndCapture: une version de- onCompositionEndqui se déclenche durant la phase de capture.
- onCompositionUpdate: un gestionnaire d’événement- CompositionEvent. Cet événement est déclenché quand un système de composition de texte reçoit un nouveau caractère.
- onCompositionUpdateCapture: une version de- onCompositionUpdatequi se déclenche durant la phase de capture.
- onContextMenu: un gestionnaire d’événement- MouseEvent. Cet événement est déclenché lorsque l’utilisateur tente d’ouvrir un menu contextuel.
- onContextMenuCapture: une version de- onContextMenuqui se déclenche durant la phase de capture.
- onCopy: un gestionnaire d’événement- ClipboardEvent. Cet événement est déclenché quand l’utilisateur tente de copier quelque chose dans le presse-papier.
- onCopyCapture: une version de- onCopyqui se déclenche durant la phase de capture.
- onCut: un gestionnaire d’événement- ClipboardEvent. Cet événement est déclenché quand l’utilisateur tente de couper quelque chose dans le presse-papier.
- onCutCapture: une version de- onCutqui se déclenche durant la phase de capture.
- onDoubleClick: un gestionnaire d’événement- MouseEvent. Cet événement est déclenché quand l’utilisateur double clique. Ça correspond à l’événement- dblclickdu navigateur.
- onDoubleClickCapture: une version de- onDoubleClickqui se déclenche durant la phase de capture.
- onDrag: un gestionnaire d’événement- DragEvent. Cet événement est déclenché tant que l’utilisateur fait glisser quelque chose.
- onDragCapture: une version de- onDragqui se déclenche durant la phase de capture.
- onDragEnd: un gestionnaire d’événement- DragEvent. Cet événement est déclenché lorsque l’utilisateur arrête de glisser-déposer quelque chose.
- onDragEndCapture: une version de- onDragEndqui se déclenche durant la phase de capture.
- onDragEnter: un gestionnaire d’événement- DragEvent. 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 de- onDragEnterqui se déclenche durant la phase de capture.
- onDragOver: un gestionnaire d’événement- DragEvent. 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 appeler- e.preventDefault()ici pour autoriser le dépôt.
- onDragOverCapture: une version de- onDragOverqui se déclenche durant la phase de capture.
- onDragStart: un gestionnaire d’événement- DragEvent. Cet événement est déclenché lorsque l’utilisateur commence le glisser-déposer d’un élément.
- onDragStartCapture: une version de- onDragStartqui se déclenche durant la phase de capture.
- onDrop: un gestionnaire d’événement- DragEventhandler. Cet événement est déclenché lorsque quelque chose a été glissé-déposé sur une cible valide.
- onDropCapture: une version de- onDropqui se déclenche durant la phase de capture.
- onFocus: un gestionnaire d’événement- FocusEvent. Cet événement est déclenché lorsqu’un élément reçoit le focus. Contrairement à l’événement natif- focusdu navigateur, en React l’événement- onFocusest propagé le long du DOM.
- onFocusCapture: une version de- onFocusqui se déclenche durant la phase de capture.
- onGotPointerCapture: un gestionnaire d’événement- PointerEvent. Cet événement est déclenché lorsqu’un élément capture programmatiquement le pointeur.
- onGotPointerCaptureCapture: une version de- onGotPointerCapturequi se déclenche durant la phase de capture.
- onKeyDown: un gestionnaire d’événement- KeyboardEventhandler. Cet événement est déclenché quand une touche est pressée.
- onKeyDownCapture: une version de- onKeyDownqui se déclenche durant la phase de capture.
- onKeyPress: un gestionnaire d’événement- KeyboardEvent. Il est déprécié. Privilégiez- onKeyDownou- onBeforeInput.
- onKeyPressCapture: une version de- onKeyPressqui se déclenche durant la phase de capture.
- onKeyUp: un gestionnaire d’événement- KeyboardEvent. Cet événement est déclenché quand une touche est relâchée.
- onKeyUpCapture: une version de- onKeyUpqui se déclenche durant la phase de capture.
- onLostPointerCapture: un gestionnaire d’événement- PointerEvent. Cet événement est déclenché quand un élément cesse de capturer le pointeur.
- onLostPointerCaptureCapture: une version de- onLostPointerCapturequi se déclenche durant la phase de capture.
- onMouseDown: un gestionnaire d’événement- MouseEvent. Cet événement est déclenché quand un bouton du dispositif de pointage est pressé.
- onMouseDownCapture: une version de- onMouseDownqui se déclenche durant la phase de capture.
- onMouseEnter: un gestionnaire d’événement- MouseEvent. 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,- onMouseLeaveet- onMouseEnterse propagent de l’élément que l’on quitte à celui sur lequel on arrive.
- onMouseLeave: un gestionnaire d’événement- MouseEvent. 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,- onMouseLeaveet- onMouseEnterse propagent de l’élément que l’on quitte à celui sur lequel on arrive.
- onMouseMove: un gestionnaire d’événement- MouseEvent. Cet événement est déclenché lorsque les coordonnées du pointeur changent.
- onMouseMoveCapture: une version de- onMouseMovequi se déclenche durant la phase de capture.
- onMouseOut: un gestionnaire d’événement- MouseEvent. 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 de- onMouseOutqui se déclenche durant la phase de capture.
- onMouseUp: un gestionnaire d’événement- MouseEvent. Cet événement est déclenché quand un bouton du dispositif de pointage est relâché.
- onMouseUpCapture: une version de- onMouseUpqui se déclenche durant la phase de capture.
- onPaste: un gestionnaire d’événement- ClipboardEvent. Cet événement est déclenché lorsque l’utilisateur tente de coller quelque chose depuis le presse-papier.
- onPasteCapture: une version de- onPastequi se déclenche durant la phase de capture.
- onPointerCancel: un gestionnaire d’événement- PointerEvent. Cet événement est déclenché lorque le navigateur annule une interaction du dispositif de pointage.
- onPointerCancelCapture: une version de- onPointerCancelqui se déclenche durant la phase de capture.
- onPointerDown: un gestionnaire d’événement- PointerEvent. Cet événement est déclenché quand un pointeur devient actif.
- onPointerDownCapture: une version de- onPointerDownqui se déclenche durant la phase de capture.
- onPointerEnter: un gestionnaire d’événement- PointerEvent. 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,- onPointerLeaveet- onPointerEnterse propagent de l’élément que l’on quitte à celui sur lequel on arrive.
- onPointerLeave: un gestionnaire d’événement- PointerEvent. 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,- onPointerLeaveet- onPointerEnterse propagent de l’élément que l’on quitte à celui sur lequel on arrive.
- onPointerMove: un gestionnaire d’événement- PointerEvent. Cet événement est déclenché lorsque les coordonnées d’un pointeur changent.
- onPointerMoveCapture: une version de- onPointerMovequi se déclenche durant la phase de capture.
- onPointerOut: un gestionnaire d’événement- PointerEvent. 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 de- onPointerOutqui se déclenche durant la phase de capture.
- onPointerUp: un gestionnaire d’événement- PointerEvent. Cet événement est déclenché lorsqu’un pointeur n’est plus actif.
- onPointerUpCapture: une version de- onPointerUpqui se déclenche durant la phase de capture.
- onScroll: un gestionnaire d’événement- Event. 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 de- onScrollqui se déclenche durant la phase de capture.
- onSelect: un gestionnaire d’événement- Event. 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énement- onSelectpour qu’il fonctionne aussi avec les éléments- contentEditable={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 de- onSelectqui se déclenche durant la phase de capture.
- onTouchCancel: un gestionnaire d’événement- TouchEvent. Cet événement est déclenché lorsque le navigateur annule une interaction tactile.
- onTouchCancelCapture: une version de- onTouchCancelqui se déclenche durant la phase de capture.
- onTouchEnd: un gestionnaire d’événement- TouchEvent. Cet événement est déclenché lorsqu’au moins un pointeur tactile est enlevé.
- onTouchEndCapture: une version de- onTouchEndqui se déclenche durant la phase de capture.
- onTouchMove: un gestionnaire d’événement- TouchEvent. Cet événement est déclenché quand au moins un pointeur tactile est déplacé.
- onTouchMoveCapture: une version de- onTouchMovequi se déclenche durant la phase de capture.
- onTouchStart: un gestionnaire d’événement- TouchEvent. Cet événement est déclenché quand au moins un pointeur tactile est détecté.
- onTouchStartCapture: une version de- onTouchStartqui se déclenche durant la phase de capture.
- onTransitionEnd: un gestionnaire d’événement- TransitionEvent. Cet événement est déclenché quand une transition CSS se termine.
- onTransitionEndCapture: une version de- onTransitionEndqui se déclenche durant la phase de capture.
- onWheel: un gestionnaire d’événement- WheelEvent. Cet événement est déclenché lorsque l’utilisateur fait tourner la molette du dispositif de pointage.
- onWheelCapture: une version de- onWheelqui 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 ou- null. Lorsqu’il est défini explicitement à- trueou- false, 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- -1et- 0.
- 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énement- Event. Cet événement est déclenché quand un formulaire est réinitialisé (ramené à ses valeurs définies par le code HTML).
- onResetCapture: une version de- onResetqui se déclenche durant la phase de capture.
- onSubmit: un gestionnaire d’événement- Event. Cet événement est déclenché quand un formulaire est soumis pour traitement.
- onSubmitCapture: une version de- onSubmitqui 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énement- Event. Cet événement est déclenché quand l’utilisateur tente de fermer la boîte de dialogue.
- onCancelCapture: une version de- onCancelqui se déclenche durant la phase de capture.
- onClose: un gestionnaire d’événement- Event. Cet événement est déclenché quand une boîte de dialogue a terminé de se fermer.
- onCloseCapture: une version de- onClosequi 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énement- Event. Cet événement est déclenché lorsque l’utilisateur fait basculer les détails.
- onToggleCapture: une version de- onTogglequi 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énement- Event. Cet événement est déclenché quand la ressouce a été complètement chargée.
- onLoadCapture: une version de- onLoadqui se déclenche durant la phase de capture.
- onError: un gestionnaire d’événement- Event. Cet événement est déclenché lorsque la ressource n’a pas pu être chargée.
- onErrorCapture: une version de- onErrorqui 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énement- Event. 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 de- onAbortqui se déclenche durant la phase de capture.
- onCanPlay: un gestionnaire d’événement- Event. 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 de- onCanPlayqui se déclenche durant la phase de capture.
- onCanPlayThrough: un gestionnaire d’événement- Event. 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 de- onCanPlayThroughqui se déclenche durant la phase de capture.
- onDurationChange: un gestionnaire d’événement- Event. Cet événement est déclenché lorsque la durée du média a changé.
- onDurationChangeCapture: une version de- onDurationChangequi se déclenche durant la phase de capture.
- onEmptied: un gestionnaire d’événement- Event. Cet événement est déclenché lorsque le média est devenu vide (purge du flux par exemple).
- onEmptiedCapture: une version de- onEmptiedqui se déclenche durant la phase de capture.
- onEncrypted: un gestionnaire d’événement- Event. Cet événement est déclenché lorsque le navigateur rencontre un média chiffré.
- onEncryptedCapture: une version de- onEncryptedqui se déclenche durant la phase de capture.
- onEnded: un gestionnaire d’événement- Event. Cet événement est déclenché lorsque la lecture s’arrête car il n’y a plus rien à jouer.
- onEndedCapture: une version de- onEndedqui se déclenche durant la phase de capture.
- onError: un gestionnaire d’événement- Event. Cet événement est déclenché lorsque la ressource n’a pas pu être chargée.
- onErrorCapture: une version de- onErrorqui se déclenche durant la phase de capture.
- onLoadedData: un gestionnaire d’événement- Event. Cet événement est déclenché lorsque le segment de lecture courant a été chargé.
- onLoadedDataCapture: une version de- onLoadedDataqui se déclenche durant la phase de capture.
- onLoadedMetadata: un gestionnaire d’événement- Event. Cet événement est déclenché lorsque les métadonnées ont été chargées.
- onLoadedMetadataCapture: une version de- onLoadedMetadataqui se déclenche durant la phase de capture.
- onLoadStart: un gestionnaire d’événement- Event. Cet événement est déclenché lorsque le navigateur commence à charger une ressource.
- onLoadStartCapture: une version de- onLoadStartqui se déclenche durant la phase de capture.
- onPause: un gestionnaire d’événement- Event. Cet événement est déclenché lorsque la lecture du média est mise en pause.
- onPauseCapture: une version de- onPausequi se déclenche durant la phase de capture.
- onPlay: un gestionnaire d’événement- Event. Cet événement est déclenché le média n’est plus en pause.
- onPlayCapture: une version de- onPlayqui se déclenche durant la phase de capture.
- onPlaying: un gestionnaire d’événement- Event. Cet événement est déclenché le média commence ou recommence sa lecture.
- onPlayingCapture: une version de- onPlayingqui se déclenche durant la phase de capture.
- onProgress: un gestionnaire d’événement- Event. Cet événement est déclenché périodiquement pendant le chargement de la ressource.
- onProgressCapture: une version de- onProgressqui se déclenche durant la phase de capture.
- onRateChange: un gestionnaire d’événement- Event. Cet événement est déclenché lorsque le débit de lecture change.
- onRateChangeCapture: une version de- onRateChangequi se déclenche durant la phase de capture
- onResize: un gestionnaire d’événement- Event. Cet événement est déclenché lorsque les dimensions de la vidéo changent.
- onResizeCapture: une version de- onResizequi se déclenche durant la phase de capture.
- onSeeked: un gestionnaire d’événement- Event. Cet événement est déclenché lorsqu’un déplacement du pointeur de lecture se termine.
- onSeekedCapture: une version de- onSeekedqui se déclenche durant la phase de capture.
- onSeeking: un gestionnaire d’événement- Event. Cet événement est déclenché lorsqu’un déplacement du pointeur de lecture commence.
- onSeekingCapture: une version de- onSeekingqui se déclenche durant la phase de capture.
- onStalled: un gestionnaire d’événement- Event. 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 de- onStalledqui se déclenche durant la phase de capture.
- onSuspend: un gestionnaire d’événement- Event. Cet événement est déclenché lorsque le chargement de la ressource est suspendu.
- onSuspendCapture: une version de- onSuspendqui se déclenche durant la phase de capture.
- onTimeUpdate: un gestionnaire d’événement- Event. Cet événement est déclenché lorsque le temps de lecture est mis à jour.
- onTimeUpdateCapture: une version de- onTimeUpdatequi se déclenche durant la phase de capture.
- onVolumeChange: un gestionnaire d’événement- Event. Cet événement est déclenché lorsque le volume audio a changé.
- onVolumeChangeCapture: une version de- onVolumeChangequi se déclenche durant la phase de capture.
- onWaiting: un gestionnaire d’événement- Event. Cet événement est déclenché lorsque la lecture s’est arrêtée suite à un manque de données.
- onWaitingCapture: une version de- onWaitingqui 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 ou- null. React vous donnera le nœud DOM lorsque la ref sera attachée, et- nulllorsqu’elle sera détachée. À moins de passer la même référence de fonction- refà 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 fonction- preventDefaulta é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: un- EventDOM. 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 si- preventDefaulta été appelée.
- isPropagationStopped(): renvoie une valeur booléenne indiquant si- stopPropagationa é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 si- persista é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:- altKey
- button
- buttons
- ctrlKey
- clientX
- clientY
- getModifierState(key)
- metaKey
- movementX
- movementY
- pageX
- pageY
- relatedTarget
- screenX
- screenY
- shiftKey
 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:- altKey
- charCode
- code
- ctrlKey
- getModifierState(key)
- key
- keyCode
- locale
- metaKey
- location
- repeat
- shiftKey
- which
 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:- altKey
- button
- buttons
- ctrlKey
- clientX
- clientY
- getModifierState(key)
- metaKey
- movementX
- movementY
- pageX
- pageY
- relatedTarget
- screenX
- screenY
- shiftKey
 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:- altKey
- button
- buttons
- ctrlKey
- clientX
- clientY
- getModifierState(key)
- metaKey
- movementX
- movementY
- pageX
- pageY
- relatedTarget
- screenX
- screenY
- shiftKey
 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
  onScroll={e => console.log('onScroll')}
/>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:- altKey
- button
- buttons
- ctrlKey
- clientX
- clientY
- getModifierState(key)
- metaKey
- movementX
- movementY
- pageX
- pageY
- relatedTarget
- screenX
- screenY
- shiftKey
 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> ); }