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
,undefined
ou 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 propchildren
de 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éinnerHTML
du 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 rappelref
ou 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 deschildren
etcontentEditable={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éstyle
du DOM, les noms des propriétés CSS doivent être écrites encamelCase
, commefontWeight
au 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’utiliserstyle
que 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 surclassName
etstyle
.
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 deschildren
React à 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 avecuseId
pour é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 deonAnimationEnd
qui 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 deonAnimationIteration
qui 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 deonAnimationStart
qui 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 deonAuxClick
qui 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 deonBeforeInput
qui 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 natifblur
du navigateur, en React l’événementonBlur
est propagé le long du DOM.onBlurCapture
: une version deonBlur
qui 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 deonClick
qui 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 deonCompositionStart
qui 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 deonCompositionEnd
qui 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 deonCompositionUpdate
qui 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 deonContextMenu
qui 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 deonCopy
qui 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 deonCut
qui 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énementdblclick
du navigateur.onDoubleClickCapture
: une version deonDoubleClick
qui 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 deonDrag
qui 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 deonDragEnd
qui 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 deonDragEnter
qui 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 deonDragOver
qui 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 deonDragStart
qui se déclenche durant la phase de capture.onDrop
: un gestionnaire d’événementDragEvent
handler. Cet événement est déclenché lorsque quelque chose a été glissé-déposé sur une cible valide.onDropCapture
: une version deonDrop
qui 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 natiffocus
du navigateur, en React l’événementonFocus
est propagé le long du DOM.onFocusCapture
: une version deonFocus
qui 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 deonGotPointerCapture
qui se déclenche durant la phase de capture.onKeyDown
: un gestionnaire d’événementKeyboardEvent
handler. Cet événement est déclenché quand une touche est pressée.onKeyDownCapture
: une version deonKeyDown
qui se déclenche durant la phase de capture.onKeyPress
: un gestionnaire d’événementKeyboardEvent
. Il est déprécié. PrivilégiezonKeyDown
ouonBeforeInput
.onKeyPressCapture
: une version deonKeyPress
qui 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 deonKeyUp
qui 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 deonLostPointerCapture
qui 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 deonMouseDown
qui 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,onMouseLeave
etonMouseEnter
se 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,onMouseLeave
etonMouseEnter
se 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 deonMouseMove
qui 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 deonMouseOut
qui 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 deonMouseUp
qui 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 deonPaste
qui 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 deonPointerCancel
qui 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 deonPointerDown
qui 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,onPointerLeave
etonPointerEnter
se 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,onPointerLeave
etonPointerEnter
se 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 deonPointerMove
qui 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 deonPointerOut
qui 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 deonPointerUp
qui 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 deonScroll
qui 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énementonSelect
pour 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 deonSelect
qui 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 deonTouchCancel
qui 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 deonTouchEnd
qui 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 deonTouchMove
qui 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 deonTouchStart
qui 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 deonTransitionEnd
qui 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 deonWheel
qui 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 àtrue
oufalse
, 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-1
et0
.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 deonReset
qui 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 deonSubmit
qui 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 deonCancel
qui 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 deonClose
qui 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 deonToggle
qui 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 deonLoad
qui 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 deonError
qui 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 deonAbort
qui 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 deonCanPlay
qui 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 deonCanPlayThrough
qui 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 deonDurationChange
qui 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 deonEmptied
qui 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 deonEncrypted
qui 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 deonEnded
qui 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 deonError
qui 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 deonLoadedData
qui 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 deonLoadedMetadata
qui 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 deonLoadStart
qui 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 deonPause
qui 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 deonPlay
qui 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 deonPlaying
qui 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 deonProgress
qui 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 deonRateChange
qui 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 deonResize
qui 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 deonSeeked
qui 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 deonSeeking
qui 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 deonStalled
qui 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 deonSuspend
qui 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 deonTimeUpdate
qui 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 deonVolumeChange
qui 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 deonWaiting
qui se déclenche durant la phase de capture.
Limitations
- Vous ne pouvez pas passer à la fois
children
etdangerouslySetInnerHTML
. - Certains événements (tels que
onAbort
etonLoad
) 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, etnull
lorsqu’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.
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 fonctionpreventDefault
a é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
: unEvent
DOM. 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 sipreventDefault
a été appelée.isPropagationStopped()
: renvoie une valeur booléenne indiquant sistopPropagation
a é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 sipersist
a été appelée.
Limitations
- Les valeurs de
currentTarget
,eventPhase
,target
ettype
ré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.currentTarget
peut différer due.nativeEvent.currentTarget
sous-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
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
: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} />; }
L’objet {__html}
est censé être produit le plus près possible de la génération effective du HTML, comme le fait l’exemple précédent dans la fonction renderMarkdownToHTML
. Ça garantit que tous les morceaux de HTML brut dans votre code sont explicitement identifiés comme tels, et que seules les variables dans le contenu desquelles vous anticipez la présence de HTML sont passées à dangerouslySetInnerHTML
. Nous vous déconseillons de créer ces objets à la volée comme dans <div dangerouslySetInnerHTML={{__html: 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> ); }