Que sont les composants contrôlés et les composants non contrôlés dans ReactJS ? En quoi diffèrent-ils l'un de l'autre ?
La valeur n'est-elle pas prise en compte par state
plutôt que props
?
Que sont les composants contrôlés et les composants non contrôlés dans ReactJS ? En quoi diffèrent-ils l'un de l'autre ?
Cela concerne les composants DOM avec état (éléments de formulaire) et la documentation de React explique la différence :
props
et notifie les changements par le biais de rappels tels que onChange
. Un composant parent le "contrôle" en s'occupant du rappel, en gérant son propre état et en transmettant les nouvelles valeurs en tant qu'accessoires au composant contrôlé. On peut aussi appeler cela un "composant muet".ref
pour trouver sa valeur actuelle lorsque vous en avez besoin. Cela ressemble un peu plus au HTML traditionnel.La plupart des composants de formulaire React natifs prennent en charge l'utilisation contrôlée et non contrôlée :
// Controlled:
<input type="text" value={value} onChange={handleChange} />
// Uncontrolled:
<input type="text" defaultValue="foo" ref={inputRef} />
// Use `inputRef.current.value` to read the current value of <input>
Dans la plupart (ou la totalité) des cas vous devez utiliser des composants contrôlés .
@IvankaTodorova Pour un composant contrôlé, la valeur est transmise par l'intermédiaire de props
. Un composant non contrôlé utiliserait state
pour contrôler la valeur elle-même en interne. C'est là la différence essentielle.
La différence entre les deux est que les composants dont la valeur est définie/passée et qui ont un rappel sont appelés controlled components
( <input type="text" value="value" onChange={handleChangeCallbackFn} />
) par rapport au HTML traditionnel où un élément de saisie gère sa propre valeur et peut être lu par l'intermédiaire de refs
appelé uncontrolled components
( <value type="text" />
). Les composants contrôlés gèrent leur propre état via setState
ou l'obtiennent de leur composant parent en tant qu'accessoires.
Composant non contrôlé y Composant contrôlé sont des termes utilisés pour décrire les composants React qui effectuent un rendu Éléments de formulaire HTML . Chaque fois que vous créez un composant React qui rend un élément de formulaire HTML, vous créez l'un de ces deux éléments.
Composants non contrôlés y Composants contrôlés diffèrent dans la manière dont ils accèdent aux données de la éléments du formulaire ( <input>
, <textarea>
, <select>
).
Un composant non contrôlé est un composant qui rend les éléments de formulaire, où les données de l'élément de formulaire sont gérées par le DOM (comportement par défaut du DOM). Pour accéder au nœud DOM de l'entrée et en extraire la valeur, vous pouvez utiliser une balise ref .
const { useRef } from 'react';
function Example () {
const inputRef = useRef(null);
return <input type="text" defaultValue="bar" ref={inputRef} />
}
A composant contrôlé est un composant qui rend les éléments de formulaire et les contrôle en conservant les données du formulaire dans l'état du composant.
Dans un composant contrôlé les données de l'élément de formulaire sont gérées par le composant React (et non par le DOM) et conservées. dans l'état du composant . Un composant contrôlé remplace fondamentalement le comportement par défaut des éléments du formulaire HTML.
Nous créons un composant contrôlé en connectant l'élément de formulaire ( <input>
, <textarea>
o <select>
) au État en définissant son attribut value
et l'événement onChange
.
const { useState } from 'react';
function Controlled () {
const [email, setEmail] = useState();
const handleInput = (e) => setEmail(e.target.value);
return <input type="text" value={email} onChange={handleInput} />;
}
Le composant contrôlé est le composant qui reçoit la valeur modifiée de la fonction de rappel. et un composant non contrôlé est un composant qui reçoit la valeur du DOM. Par exemple, lorsque la valeur d'une entrée est modifiée, Lorsque la valeur d'entrée est modifiée, nous pouvons utiliser la fonction onChange dans le composant contrôlé et Nous pouvons également obtenir la valeur en utilisant le DOM comme ref.
Les composants contrôlés sont principalement ceux pour lesquels toute valeur de prop du composant provient soit du composant parent, soit du magasin (comme dans le cas de redux). Exemple :
<ControlledComp value={this.props.fromParent}/>
Dans le cas d'un composant non contrôlé, la valeur du composant peut être tirée de l'état du composant en fonction du traitement de l'événement. Exemple :
<UncontrolledComp value={this.state.independentValue}/>
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
27 votes
Réouverture de la procédure de nomination. Il s'agit en fait d'une question assez précise. Je ne vois pas comment elle pourrait être considérée comme trop large.