Réponses:
Cela concerne les composants DOM avec état (éléments de formulaire) et les documents React expliquent la différence:
propset notifie les modifications via des rappels comme onChange. Un composant parent le «contrôle» en gérant le rappel, en gérant son propre état et en passant les nouvelles valeurs comme accessoires au composant contrôlé. Vous pouvez également appeler cela un "composant stupide".refpour 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 une 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 tous) des cas, vous devez utiliser des composants contrôlés .
stateplutôt que props?
props. Un composant incontrôlé utiliserait statepour contrôler la valeur elle-même en interne. C'est la principale différence.
controlled components( <input type="text" value="value" onChange={handleChangeCallbackFn} />) par rapport au HTML traditionnel où un élément d'entrée gère sa propre valeur et peut être lu via refsappelé uncontrolled components( <value type="text" />). Les composants contrôlés gèrent leur propre état via setStateou l'obtiennent de leur composant parent comme accessoires.
defaultValuepar des accessoires, mais qui avertit le contrôleur onBlur?
<Button onClick={() => console.log("clicked")}>Click</Button>.