Risposte:
Questo si riferisce ai componenti DOM stateful (elementi del modulo) e i documenti di React spiegano la differenza:
propse notifica le modifiche tramite callback come onChange. Un componente genitore lo "controlla" gestendo il callback e gestendo il proprio stato e passando i nuovi valori come props al componente controllato. Potresti anche chiamarlo un "componente stupido".refper trovare il suo valore corrente quando ne hai bisogno. Questo è un po 'più simile all'HTML tradizionale.La maggior parte dei componenti del modulo React nativo supporta l'utilizzo sia controllato che non controllato:
// 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>
Nella maggior parte (o in tutti) i casi è necessario utilizzare componenti controllati .
statepiuttosto che props?
props. Un componente non statecontrollato utilizzerebbe per controllare internamente il valore stesso. Questa è la differenza fondamentale.
controlled components( <input type="text" value="value" onChange={handleChangeCallbackFn} />) rispetto all'HTML tradizionale in cui un elemento di input gestisce il proprio valore e può essere letto tramite refscalled uncontrolled components( <value type="text" />). I componenti controllati gestiscono il proprio stato tramite setStateo lo ottengono dal componente genitore come oggetti di scena.
defaultValueattraverso gli oggetti di scena, ma che notifica il controller onBlur?
<Button onClick={() => console.log("clicked")}>Click</Button>.