Hook useWindowSize de React

ReactReactBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderemos a usar el hook useWindowSize en React para rastrear las dimensiones de la ventana del navegador. Este hook nos permite crear diseños responsivos y ajustar el diseño de nuestros componentes según el tamaño de la pantalla del usuario. Al final de este laboratorio, tendrás una mejor comprensión de cómo usar hooks en React y cómo crear aplicaciones más amigables para el usuario.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL react(("React")) -.-> react/FundamentalsGroup(["Fundamentals"]) react(("React")) -.-> react/AdvancedConceptsGroup(["Advanced Concepts"]) react(("React")) -.-> react/StateManagementGroup(["State Management"]) react/FundamentalsGroup -.-> react/jsx("JSX") react/AdvancedConceptsGroup -.-> react/hooks("React Hooks") react/StateManagementGroup -.-> react/use_state_reducer("Using useState and useReducer") subgraph Lab Skills react/jsx -.-> lab-38416{{"Hook useWindowSize de React"}} react/hooks -.-> lab-38416{{"Hook useWindowSize de React"}} react/use_state_reducer -.-> lab-38416{{"Hook useWindowSize de React"}} end

Hook useWindowSize de React

index.html y script.js ya se han proporcionado en la máquina virtual. En general, solo es necesario agregar código a script.js y style.css.

Para rastrear las dimensiones de la ventana del navegador, se pueden seguir los siguientes pasos:

  1. Utilizar el hook useState() para inicializar una variable de estado windowSize que contendrá las dimensiones de la ventana. Inicializar con ambos valores establecidos en undefined para evitar desajustes entre los renderizados del servidor y el cliente.
const [windowSize, setWindowSize] = React.useState({
  width: undefined,
  height: undefined
});
  1. Crear una función handleResize() que utilice Window.innerWidth y Window.innerHeight para actualizar la variable de estado. Esta función se llamará cada vez que se active el evento 'resize'.
const handleResize = () =>
  setWindowSize({ width: window.innerWidth, height: window.innerHeight });
  1. Utilizar el hook useEffect() para establecer un oyente adecuado para el evento 'resize' al montar y eliminarlo al desmontar.
React.useEffect(() => {
  window.addEventListener("resize", handleResize);

  handleResize();

  return () => {
    window.removeEventListener("resize", handleResize);
  };
}, []);

Juntando todo, el hook personalizado useWindowSize() se puede definir como sigue:

const useWindowSize = () => {
  const [windowSize, setWindowSize] = React.useState({
    width: undefined,
    height: undefined
  });

  const handleResize = () =>
    setWindowSize({ width: window.innerWidth, height: window.innerHeight });

  React.useEffect(() => {
    window.addEventListener("resize", handleResize);

    handleResize();

    return () => {
      window.removeEventListener("resize", handleResize);
    };
  }, []);

  return windowSize;
};

Para usar el hook useWindowSize(), simplemente llámelo en un componente y desestructura los valores de width y height del objeto devuelto.

const MyApp = () => {
  const { width, height } = useWindowSize();

  return (
    <p>
      Tamaño de la ventana: ({width} x {height})
    </p>
  );
};

ReactDOM.createRoot(document.getElementById("root")).render(<MyApp />);

Haga clic en 'Go Live' en la esquina inferior derecha para ejecutar el servicio web en el puerto 8080. Luego, puede actualizar la pestaña Web 8080 para previsualizar la página web.

Resumen

¡Felicitaciones! Has completado el laboratorio del Hook useWindowSize de React. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.