Implementar el Hook useWindowSize
Para comenzar, abre el editor. Puedes ver los siguientes archivos desde tu editor.
├── package-lock.json
├── package.json
├── public
│ ├── index.html
│ └── robots.txt
└── src
├── App.css
├── App.js
├── hooks
│ └── useWindowSize.js
├── index.css
├── index.js
├── reportWebVitals.js
└── setupTests.js
En este paso, aprenderás a implementar el Hook personalizado useWindowSize
para obtener el tamaño actual de la ventana.
- Abre el archivo
useWindowSize.js
ubicado en el directorio src/Hooks
.
- En este archivo, importa las dependencias necesarias:
import { useEffect, useState } from "react";
- Define la función
useWindowSize
:
import { useEffect, useState } from "react";
export const useWindowSize = () => {
const [windowSize, setWindowSize] = useState({
width: window.innerWidth,
height: window.innerHeight
});
const changeWindowSize = () => {
setWindowSize({ width: window.innerWidth, height: window.innerHeight });
};
useEffect(() => {
window.addEventListener("resize", changeWindowSize);
return () => {
window.removeEventListener("resize", changeWindowSize);
};
}, []);
return windowSize;
};
Explicación:
- La función
useWindowSize
devuelve un objeto que contiene el ancho y la altura actual de la ventana.
- El Hook
useState
se utiliza para crear una variable de estado windowSize
y una función setWindowSize
para actualizarla.
- La función
changeWindowSize
se define para actualizar el estado windowSize
cuando se redimensiona la ventana.
- El Hook
useEffect
se utiliza para agregar un controlador de eventos para el evento resize
y eliminarlo cuando el componente se desmonta.
- El objeto
windowSize
se devuelve desde la función useWindowSize
.