ReactDOM
These docs are old and won’t be updated. Go to react.dev for the new React docs.
These new documentation pages teach modern React:
The react-dom
package provides DOM-specific methods that can be used at the top level of your app and as an escape hatch to get outside the React model if you need to.
import * as ReactDOM from 'react-dom';
If you use ES5 with npm, you can write:
var ReactDOM = require('react-dom');
The react-dom
package also provides modules specific to client and server apps:
Aperçu
The react-dom
package exports these methods:
These react-dom
methods are also exported, but are considered legacy:
Note:
Both
render
andhydrate
have been replaced with new client methods in React 18. These methods will warn that your app will behave as if it’s running React 17 (learn more here).
Navigateurs pris en charge
React supports all modern browsers, although some polyfills are required for older versions.
Remarque
We do not support older browsers that don’t support ES5 methods or microtasks such as Internet Explorer. You may find that your apps do work in older browsers if polyfills such as es5-shim and es5-sham are included in the page, but you’re on your own if you choose to take this path.
Référence de l’API
createPortal()
This content is out of date.
Read the new React documentation for
createPortal
.
createPortal(child, container)
Creates a portal. Portals provide a way to render children into a DOM node that exists outside the hierarchy of the DOM component.
flushSync()
This content is out of date.
Read the new React documentation for
flushSync
.
flushSync(callback)
Force React to flush any updates inside the provided callback synchronously. This ensures that the DOM is updated immediately.
// Force this state update to be synchronous.
flushSync(() => {
setCount(count + 1);
});
// By this point, DOM is updated.
Note:
flushSync
can significantly hurt performance. Use sparingly.
flushSync
may force pending Suspense boundaries to show theirfallback
state.
flushSync
may also run pending effects and synchronously apply any updates they contain before returning.
flushSync
may also flush updates outside the callback when necessary to flush the updates inside the callback. For example, if there are pending updates from a click, React may flush those before flushing the updates inside the callback.
Legacy Reference
render()
This content is out of date.
Read the new React documentation for
render
.
render(element, container[, callback])
Note:
render
has been replaced withcreateRoot
in React 18. See createRoot for more info.
Affiche un élément React au sein du nœud DOM spécifié par container
et renvoie une référence sur le composant (ou renvoie null
pour les fonctions composants).
Si l’élément React était déjà affiché dans container
, cette méthode effectuera plutôt une mise à jour et ne modifiera le DOM que là où c’est strictement nécessaire pour refléter l’élément React à jour.
Si la fonction de rappel optionnelle est fournie, elle sera exécutée après que le composant est affiché ou mis à jour.
Remarque
render()
contrôle le contenu du nœud conteneur que vous lui passez. Tout élément DOM existant à l’intérieur sera potentiellement remplacé au premier appel. Les appels ultérieurs utiliseront l’algorithme de différence DOM de React pour des mises à jour efficaces.
render()
ne modifie pas le nœud conteneur lui-même (seulement ses enfants). Il peut arriver qu’insérer un composant dans un nœud DOM existant n’en modifie pas les enfants.
render()
renvoie pour le moment une référence sur l’instance racine de composant React. Toutefois, manipuler la valeur renvoyée est considéré comme déprécié, et vous devriez vous en abstenir dans la mesure où de futures versions de React pourraient gérer le rendu de façon asynchrone dans certains cas. Si vous avez besoin d’une référence sur l’instance racine de composant React, une meilleure solution consiste à associer une ref de rappel à l’élément racine.Utiliser
render()
pour hydrater un conteneur rendu côté serveur est une pratique dépréciée qui disparaîtra avec React 17. Utilisez plutôt la méthodehydrateRoot()
.
hydrate()
This content is out of date.
Read the new React documentation for
hydrate
.
hydrate(element, container[, callback])
Note:
hydrate
has been replaced withhydrateRoot
in React 18. See hydrateRoot for more info.
Similaire à render()
, mais sert à hydrater un conteneur dont le HTML a déjà été produit par ReactDOMServer
. React tentera alors d’associer les gestionnaires d’événements au balisage existant.
React s’attend à ce que le balisage produit soit identique entre le serveur et le client. Il peut gérer des différences de contenu textuel mais vous devriez considérer toute erreur de correspondance comme un bug et la corriger. En mode développement, React vous avertit de telles erreurs lors de l’hydratation. Nous ne garantissons notamment pas que les écarts d’attributs seront correctement résolus. C’est important pour les performances car dans la plupart des applications les erreurs de correspondance sont rares et faire une validation trop fine du balisage serait sans doute inutilement coûteux.
Si un attribut ou contenu textuel sur un élément précis est forcément différent entre le serveur et le client (par exemple, un horodatage), vous pouvez empêcher cet avertissement en ajoutant suppressHydrationWarning={true}
à l’élément. Ça ne marche toutefois qu’à un niveau de profondeur et c’est considéré comme une échappatoire. N’en abusez pas. À moins qu’il ne s’agisse de contenu textuel, React ne tentera de toutes façons pas de résoudre la différence qui pourrait rester incohérente jusqu’aux prochaines mises à jour.
Si vous faites volontairement un rendu différent entre le serveur et le client, vous pouvez procéder à un rendu en deux passes. Les composants qui ont un rendu serveur différent peuvent lire une variable d’état local du style this.state.isClient
, que vous définirez à true
au sein de componentDidMount()
. Ainsi, la première passe de rendu affichera le même contenu que celui du serveur, évitant les écarts, mais une passe supplémentaire surviendra de façon synchrone juste après l’hydratation. Remarquez que cette approche ralentira l’initialisation de vos composants car ils devront faire un double rendu au démarrage : ne l’employez qu’avec précaution.
Souvenez-vous que les connexions lentes ont un impact sur l’expérience utilisateur. Le code JavaScript peut être chargé très longtemps après l’affichage HTML initial de sorte que si vous affichez quelque chose de différent lors du rendu coté client, la transition risque de désorienter l’utilisateur. Ceci dit, si vous vous y prenez bien, il peut tout de même être utile de produire d’abord une « ossature » de l’application sur le serveur et de n’ajouter certains éléments visuels supplémentaires qu’une fois coté client. Pour apprendre à faire ça sans souffrir d’écarts de balisage, relisez le paragraphe précédent.
unmountComponentAtNode()
This content is out of date.
Read the new React documentation for
unmountComponentAtNode
.
unmountComponentAtNode(container)
Note:
unmountComponentAtNode
has been replaced withroot.unmount()
in React 18. See createRoot for more info.
Retire un composant React monté du DOM et nettoie ses gestionnaires d’événements et son état local. Si aucun composant n’était monté sur ce conteneur, appeler cette fonction ne fait rien. Renvoie true
si un composant a bien été démonté et false
si aucun composant ne nécessitait de démontage.
findDOMNode()
This content is out of date.
Read the new React documentation for
findDOMNode
.
Remarque
findDOMNode
est une échappatoire utilisée pour accéder au nœud du DOM associé au composant. La plupart du temps, nous déconseillons le recours à cette échappatoire parce qu’elle rompt l’abstraction du composant. Elle est d’ailleurs désormais dépréciée en mode strict.
findDOMNode(component)
Si le composant a été monté dans le DOM, cette méthode renvoie l’élément DOM (natif au navigateur) qui a servi de point de montage. Ça peut être utile pour lire des valeurs issues du DOM, telles que la valeur d’un champ de formulaire, ou pour effectuer des mesures de tailles sur les nœuds du DOM. La plupart du temps, préférez associer une ref au nœud du DOM, et évitez complètement findDOMNode
.
Quand le rendu d’un composant produit null
ou false
, finDOMNode
renvoie null
. Quand ça produit une chaîne de caractère, findDOMNode
renvoie le nœud DOM textuel qui contient cette valeur. Depuis React 16, un composant peut renvoyer un fragment avec de multiples enfants, auquel cas findDOMNode
renverra le nœud DOM correspondant au premier enfant non-vide.
Remarque
findDOMNode
ne fonctionne que sur des composants montés (c’est-à-dire des composants qui ont été placés dans le DOM). Si vous tentez de l’appeler sur un composant qui n’a pas encore été monté (par exemple en appelantfindDOMNode()
dans lerender()
initial d’un composant), une exception sera levée.
findDOMNode
ne peut pas être utilisée sur des fonctions composants.