Respuestas:
Esto se relaciona con los componentes DOM con estado (elementos de formulario) y los documentos de React explican la diferencia:
props
y notifica cambios a través de devoluciones de llamada como onChange
. Un componente principal lo "controla" manejando la devolución de llamada y administrando su propio estado y pasando los nuevos valores como accesorios al componente controlado. También podría llamar a esto un "componente tonto".ref
para encontrar su valor actual cuando lo necesita. Es un poco más parecido al HTML tradicional.La mayoría de los componentes nativos de la forma React admiten el uso controlado y no controlado:
// 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>
En la mayoría (o en todos) de los casos , debe utilizar componentes controlados .
state
lugar de props
?
props
. Un componente no controlado se usaría state
para controlar el valor en sí mismo internamente. Ésta es la diferencia clave.
controlled components
( <input type="text" value="value" onChange={handleChangeCallbackFn} />
) frente al HTML tradicional, donde un elemento de entrada maneja su propio valor y se puede leer a través de refs
llamado uncontrolled components
( <value type="text" />
). Los componentes controlados gestionan su propio estado a través setState
de su componente principal o lo obtienen de él como accesorios.
defaultValue
por accesorios, pero que notifica al controlador onBlur
?
<Button onClick={() => console.log("clicked")}>Click</Button>
.