Pasando el estado a componentes hijos
Supongamos que tenemos un componente principal llamado Padre
que contiene un estado y un componente hijo llamado Hijo
que necesita acceder a ese estado:
import React, { useState } from 'react';
// Componente Hijo
const Hijo = ({ mensaje }) => {
return <p>{mensaje}</p>;
};
// Componente Padre
const Padre = () => {
const [mensaje, setMensaje] = useState('¡Hola desde el Padre!');
return (
<div>
<h1>Componente Padre</h1>
<Hijo mensaje={mensaje} />
<button onClick={() => setMensaje('¡Hola desde el Padre actualizado!')}>
Actualizar mensaje en Padre
</button>
</div>
);
};
export default Padre;
En este ejemplo, Padre
es el componente principal que contiene el estado mensaje
. También tiene un botón que permite actualizar el estado del mensaje. El componente hijo Hijo
recibe mensaje
como una prop y lo muestra en un párrafo.
Cuando Padre
se renderiza, pasa el estado mensaje
como una prop al componente Hijo
. Luego, si el estado mensaje
se actualiza en Padre
, el componente Hijo
se vuelve a renderizar automáticamente con el nuevo valor de mensaje
.
Aquí tienes cómo pasar la función setMensaje
al componente hijo para que pueda actualizar el estado del componente padre:
import React, { useState } from 'react';
// Componente Hijo
const Hijo = ({ mensaje, actualizarMensaje }) => {
return (
<div>
<p>{mensaje}</p>
<button onClick={() => actualizarMensaje('¡Mensaje actualizado desde el Hijo!')}>
Actualizar mensaje en Padre
</button>
</div>
);
};
// Componente Padre
const Padre = () => {
const [mensaje, setMensaje] = useState('¡Hola desde el Padre!');
return (
<div>
<h1>Componente Padre</h1>
<Hijo mensaje={mensaje} actualizarMensaje={setMensaje} />
</div>
);
};
export default Padre;
En este ejemplo, hemos modificado el componente hijo Hijo
para que reciba una prop adicional llamada actualizarMensaje
, que es la función setMensaje
del componente padre Padre
.
Cuando el botón dentro del componente hijo se hace clic, invoca la función actualizarMensaje
pasada desde el componente padre con el nuevo mensaje. Esto actualizará el estado mensaje
en el componente padre, y como resultado, React volverá a renderizar el componente padre con el nuevo estado.