Composants communs (par exemple <div>)
Tous les composants intégrés du navigateur, tel que <div>
, prennent en charge des props et é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
- Gestionaire
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 React particulières sont supportées pour tous les composants intégrés :
-
children
: un nœud React (un élément, une chaîne de caractères, un nombre, un portail, un nœud vide commenull
,undefined
et les booléns ou un tableau d’autres nœuds React). Ça 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 telles que<div><span /></div>
. -
dangerouslySetInnerHTML
: un objet de la forme{ __html: '<p>some html</p>' }
avec du HTML brut dans une chaîne de caractères. Il surcharge la propriétéinnerHTML
du nœud du DOM et affiche à l’intérieur le HTML donné. Cette méthode doit être utilisée avec une extrême prudence ! Si le HTML contenu 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
ici. -
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 rempli par l’élément du 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 élements qui ont à la fois deschildren
etcontentEditable={true}
(qui ne fonctionnent normalement pas ensemble). Vous pouvez l’utiliser si vous construisez une bibliothèque de champ de saisie qui gère manuellement le contenu ducontentEditable
. -
suppressHydrationWarning
: un booléen. Si vous utilisez le rendu côté serveur, il y a normalement un avertissement lorsque le serveur et le client font le rendu d’un contenu différent. Dans certains cas rares (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 de non-concordance entre les attributs et le contenu de cet élément. Ça ne fonctionne que sur un seul niveau de profondeur et est destiné à servir d’échappatoire. N’en n’abusez pas. Apprenez-en davantage sur la suppression des errors d’hydratation ici. -
style
: un objet contenant des styles CSS, par exemple{ fontWeight: 'bold', margin: 20 }
. À l’image de la propriété du DOMstyle
, les noms des propriétés CSS doivent être écrites encamelCase
, par exemplefontWeight
plutôt quefont-weight
. Vous pouvez passer des valeurs sous forme de chaîne de caractères ou de nombre. Si vous donnez un nombre, tel quewidth: 100
, React ajoutera automatiquementpx
(« pixels ») à la valeur, à moins qu’il ne s’agisse d’une propriété sans unité. Nous recommandons d’utiliserstyle
uniquement pour les styles dynamiques pour lesquelles vous ne connaissez pas les valeurs de style à l’avance. Dans les autres cas, utiliser des classes CSS avecclassName
est bien plus efficace. Apprenez-en davantage surclassName
etstyle
ici.
Ces props standards du DOM sont également supportés pour tous les composants intégrés :
accessKey
: une chaîne de caractères. Il spécifie un raccourci clavier pour l’élément. Ce n’est généralement pas recommandé.aria-*
: les attributs ARIA vous permettent de spécifier les informations de l’arbre d’accessibilité pour cet élément. Consultez attributs ARIA pour une référence exhaustive. En React, tous les noms des attributs ARIA sont exactement les mêmes qu’en HTML.autoCapitalize
: une chaîne de caractères. Il spécifie la façon dont le texte saisi est automatiquement converti en majuscules ou non.className
: une chaîne de caractères. Il spécifie le nom de la classe CSS de l’élément. Apprenez-en davantage sur la façon d’appliquer des styles CSS ici.contentEditable
: un booléen. S’il vauttrue
, le navigateur permet à l’utilisateur d’éditer 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-*
: les attributs de données qui vous permettent d’associer des données à l’élément, par exempledata-fruit="banane"
. Ils sont peu fréquents avec 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 Drag and Drop du HTML.enterKeyHint
: une chaîne de caractères. Il 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 une légende 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. Il 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’il est spécifié, le composant se comporte comme un élément HTML personnalisé (custom element).inputMode
: une chaîne de caractères. Il définit le type de clavier à afficher (texte, nombre ou téléphone par exemple).itemProp
: une chaîne de caractères. Il spécifie la propriété qui est utilisée pour les robots d’exploration de données structurelles.lang
: une chaîne de caractères. Il 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
: commeonAnimationStart
, mais s’exécute pendant la phase de capture.onAuxClick
: un gestionnaire d’événementMouseEvent
. Cet événement est déclenché quand un bouton non principal a été appuyé.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é. 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 natif du navigateurblur
, en React l’événementonBlur
remonte au niveau 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 a été pressé par un dispositif de pointage.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 coller quelque chose depuis 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 clique deux fois. Ç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 déplace 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 le déplacement de 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 déplacé 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 déplacé 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 à déplacer 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é 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 natif du navigateurfocus
, en React l’événementonFocus
remonte au niveau 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 le pointeur programmatiquement.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 ne capture plus 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 le bouton du dispositif de pointeur 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 se déplace dans un élément. Il n’y a pas de phase de capture. À la place,onMouseLeave
etonMouseEnter
se propagent de l’élément que l’on quitte à celui sur lequel on arrive.- [
onMouseLeave
](https://developer.mozilla.org/fr/docs/Web/API/Element/mouseleave_event : un gestionnaire d’événementMouseEvent
. Cet événement est déclenché lorsque le pointeur se déplace en dehors d’un élément. Il n’y a pas de phase de capture. À la place,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 sort d’un élément ou s’il se déplace sur 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 le bouton du dispositif de pointage est relâché.onMouseUpCapture
: une version deonMouseUp
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 se déplace à l’intérieur d’un élément. Il n’y a pas de phase de capture. À la place,onPointerLeave
etonPointerEnter
se propagent de l’élément que l’on quitte à celui sur leque on arrive.onPointerLeave
: un gestionnaire d’événementPointerEvent
. Cet événement est déclenché quand un pointeur se déplace en dehors d’un élément. Il n’y a pas de phase de capture. À la place,onPointerLeave
etonPointerEnter
se propagent de l’élément que l’on quitte à celui sur leque 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 se déplace en dehors d’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.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.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 ne remonte pas.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 la sélection dans un élément éditable tel qu’un champ de saisie. React étend l’événementonSelect
pour qu’il fonctionne aussi avec les élémentscontentEditable={true}
. React le modifie également pour se déclencher lors de 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 de contact.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 point de contact 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 point de contact 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 point de contact est placé.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 un bouton de roue.onWheelCapture
: une version deonWheel
qui se déclenche durant la phase de capture.role
: une chaîne de caractères. Il explicite le rôle de l’élément pour les techniques d’assistance.slot
: une chaîne de caractères. Il spécifie le nom de l’emplacement (slot) lorsque le shadow DOM est utilisé. En React, un modèle équivalent est typiquement réalisé en passant du JSX dans les props, comme par exemple<Layout left={<Sidebar />} right={<Content />} />
.spellCheck
: un booléen ounull
. Lorsqu’il est définit 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 du bouton Tab. Évitez d’utiliser d’autres valeurs que-1
et0
.title
: une chaîne de caractères. Il spécifie le texte pour l’infobulle de l’élément.translate
:'yes'
ou'no'
. Le contenu de l’élément n’est pas traduit 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 supprimé.
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é.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.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 remontent dans le DOM :
onCancel
: un gestionnaire d’événementEvent
. Cet événement est déclenché quand l’utilisateur tente de fermer la fenêtre 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 fenêtre de dialogue a été fermée.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 remontent dans le 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 remontent dans le DOM :
onLoad
: un gestionnaire d’événementEvent
. Cet événement est déclenché quand la ressouce a été 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 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 remontent dans le 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 ne 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.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 cadre de lecture 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 le média est mis 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 à être joué.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 taux 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 la taille de la vidéo change.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’une opération de recherche 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’une opération de recherche 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 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 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 à la suite d’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
en même temps. - Certains événements (tels que
onAbort
etonLoad
) ne remontent pas dans le navigateur mais le font 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>
est ajouté à l’écran, React appelle votre fonction ref
avec le node
DOM comme argument. Quand ce nœud DOM <div>
est enlevé, React apppelle votre fonction ref
avec null
.
React appellera aussi votre fonction ref
à chaque fois que vous passez une fonction ref
différente. Dans l’exemple plus hat, (node) => { ... }
est une fonction différente à chaque rendu. Lorsque votre composant refait un rendu, la fonction précédente sera appelée avec l’argument null
, et la prochaine fonction sera appelée avec le nœud DOM.
Paramètres
node
: un nœud DOM ounull
. React vous donnera le nœud DOM lors que la ref sera attachée, etnull
lorsqu’elle sera détachée. À moins de passer la même référence de fonction pourref
à chaque rendu, la fonction de retour sera détachée et réattachée pendant chaque nouveau rendu du composant.
Valeur renvoyée
La fonction ref
ne renvoie rien.
Objet d’événement React
Votre gestionnaire d’événement reçoit un objet d’événement React. C’est également connu sous le nom d’« événement synthétique ».
<button onClick={e => {
console.log(e); // Objet événement React
}} />
Il est conforme aux même standard que les événements DOM sous-jacents, mais corrige certaines incohérences des navigateurs.
Certains événements React ne correspondent pas directement aux événements natifs des navigateurs. Par exemple, pour onMouseLeave
, e.nativeEvent
indiquera 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, allez le chercher depuis e.nativeEvent
.
Propriétés
Les objets d’événements React implémentent certaines propriétés standard des Event
:
bubbles
: un booléen. Il indique si l’événement remonte au niveau 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 sur lequel est attaché le gestionnaire dans l’arbre React.defaultPrevented
: un booléen. Il indique si la fonctionpreventDefault
a été appelée.eventPhase
: un nombre. Il indique la phase sur 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 enfant lointain).timeStamp
: un nombre. Il indique le moment où l’événement a été déclenché.
Les objets d’événements React propose également ces propriétés :
nativeEvent
: unEvent
DOM. Il s’agit de l’objet d’événement du navigateur originel.
Méthodes
Les objets d’événements React implémentent certaines méthodes standards Event
:
preventDefault()
: empêche l’action par défaut du navigateur pour l’événement.stopPropagation()
: arrête la propagation de l’événement au sein de l’arbre React.
Les objets d’événements React propose également ces méthodes :
isDefaultPrevented()
: renvoie une valeur booléenne indiquant sipreventDefault
a été appeléee.isPropagationStopped()
: renvoie une valeur booléenne indiquant sistopPropagation
a été appelée.persist()
: elle n’est pas utilisée avec 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()
: elle n’est pas utilisée avec 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 ne pas être le même que lee.nativeEvent.currentTarget
sous-javent. Pour les événements polyfillés,e.type
(type de l’événement React) peut 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 additionnelles deAnimationEvent
:
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 additionnelles deClipboardEvent
:
Gestionaire CompositionEvent
Un type de gestionnaire d’événement pour les événements des méthodes des éditeurs de saisie (IME).
<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 additionnelles deCompositionEvent
:
Gestionnaire DragEvent
Un type de gestionnaire d’événement pour les événements de l’API Drag and Drop du HTML.
<>
<div
draggable={true}
onDragStart={e => console.log('onDragStart')}
onDragEnd={e => console.log('onDragEnd')}
>
Drag source
</div>
<div
onDragEnter={e => console.log('onDragEnter')}
onDragLeave={e => console.log('onDragLeave')}
onDragOver={e => { e.preventDefault(); console.log('onDragOver'); }}
onDrop={e => console.log('onDrop')}
>
Drop cible
</div>
</>
Paramètres
-
e
: un objet d’événement React avec ces propriétés additionnellesDragEvent
: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 également 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 additionnellesFocusEvent
: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é additionnelle.
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 additionnellesInputEvent
:
Gestionnaire KeyboardEvent
Un type de gestionnaire d’événement pour les événements du 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 additionnellesKeyboardEvent
: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 de 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 additionnellesMouseEvent
: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 de pointeur.
<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 additionnellesPointerEvent
: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 également 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 additionnellesTouchEvent
: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 transition CSS.
<div
onTransitionEnd={e => console.log('onTransitionEnd')}
/>
Paramètres
e
: un objet d’événement React avec ces propriétés additionnellesTransitionEvent
:
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 additionnellesUIEvent
:
Gestionnaire WheelEvent
Un type de gestionnaire d’événement pour les événements onWheel
.
<div
onScroll={e => console.log('onScroll')}
/>
Paramètres
-
e
: un objet d’événement React avec ces propriétés additionnellesWheelEvent
: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 également 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 ne prescrit pas la façon dont vous ajoutez des fichiers CSS. Dans les cas les plus simples, vous ajouterez une balise <link>
dans votre HTML. Si vous utilisez un outil de construction ou un framework, consultez sa documentation pour connaître la façon d’ajouter un fichier CSS à votre projet.
Parfois, les valeurs de style dépendent de la donnée. 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 recommandons d’utiliser l’attribut style
uniquement 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 le 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 pratique 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
Parfois, vous aurez besoin de récupérer le nœud DOM du navigateur associé à une balise en JSX. Par exemple, si vous voulez mettre le focus sur 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, il faut déclarer une ref et la passer à l’attribut ref
de cette balise :
import { useRef } from 'react';
export default function Form() {
const inputRef = useRef(null);
// ...
return (
<input ref={inputRef} />
// ...
React placera le nœud DOM dans la propriété inputRef.current
une fois qu’il sera rendu à l’écran.
import { useRef } from 'react'; export default function Form() { const inputRef = useRef(null); function handleClick() { inputRef.current.focus(); } return ( <> <input ref={inputRef} /> <button onClick={handleClick}> Placer le focus sur le champ </button> </> ); }
Apprenez-en davantage à propos de la manipulatiion du DOM avec les refs et découvrir d’autres exemples.
Pour des utilisations plus avancées, l’attribut ref
accepte églament une fonction de rappel.
Définir le HTML interne de façon risquée
Vous pouvez passer une chaîne de caractère contenant du HTML brut à un élément de cette façon :
const markup = { __html: '<p>du HTML brut</p>' };
return <div dangerouslySetInnerHTML={markup} />;
C’est dangereux. Comme pour la propriété du DOM innerHTML
, 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 de Markdown qui convertit le Markdown en HTML, que vous êtes sûr 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 sûr UNIQUEMENT parce que le HTML généré // est affiché à l'utilisateur, 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 le rendu d’un HTML arbitraire est dangereux, remplacez le code plus haut par celui-ci :
const post = {
// Imaginez que ce contenu est stocké en base de données.
content: `<img src="" onerror='alert("vous avez été hacké")'>`
};
export default function MarkdownPreview() {
// 🔴 FAILLE DE SÉCURITÉ : passer une saisie non fiable to 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 de l’utilisateur ou effectuer certaines actions en son nom. Utilisez seulement dangerouslySetInnerHTML
avec des données de confiance et assainies.
Gérer des événements de la souris
Cet exemple montre quelques événements de souris courants et quand ils sont déclenchés.
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 de pointeur courants et quand ils sont déclenchés.
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 remontent dans le DOM. Vous pouvez utiliser currentTarget
et relatedTarget
pour différencier si les événements de focus ou de blur 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 évenements du clavier
Cet exemple montre quelques événements du clavier courants et quand ils sont déclenchés.
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> ); }