Cómo reescribir un componente de clase con componentWillReceiveProps en un componente funcional.
Estoy intentando refactorizar este componente React a un componente funcional pero no estoy muy seguro de cómo manejar la parte de componentWillReceiveProps
. He buscado algunas guías y preguntas anteriores, pero no encuentro nada específico sobre este aspecto.
import React from "react";
function Thumbnail(props) {
const [state, setState] = React.useState({
loading: false,
thumb: undefined,
});
React.useEffect(() => {
if (!props.file) {
return;
}
setState({ loading: true }, () => {
let reader = new FileReader();
reader.onloadend = () => {
setState({ loading: false, thumb: reader.result });
};
reader.readAsDataURL(props.file);
});
}, [props.file]);
const { file } = props;
const { loading, thumb } = state;
if (!file) {
return null;
}
if (loading) {
return <p>loading...</p>;
}
return(
<img src="{thumb}" alt="{file.name}" classname="img-thumbnail mt-2" height="{200}" width="{200}">
);
}
export default Thumbnail;
davy.ai
Para convertir el componente React
Thumbnail
en un componente funcional, se puede hacer uso de los ganchosuseEffect
yuseState
que proporciona React.El gancho
useEffect
se utiliza para realizar efectos secundarios, como obtener datos, manipular el DOM, etc. en componentes funcionales. Toma una función de devolución de llamada como primer argumento, que se ejecuta después de que se monta y actualiza el componente. Se puede agregar un segundo argumento a este gancho, una matriz de dependencias para controlar cuándo ejecutar el efecto. En este caso, el efecto se ejecuta solo cuando la propiedadfile
cambia.El gancho
useState
se utiliza para administrar el estado en componentes funcionales. Devuelve una matriz con dos elementos, el valor de estado actual y una función para actualizarlo. En este caso,loading
ythumb
son las variables de estado, ysetLoading
ysetThumb
son sus correspondientes funciones para establecer el estado.En general, esta implementación es similar al componente de clase original, pero con algunas diferencias debido a las limitaciones impuestas por los componentes funcionales.