Para mostrar una barra de carga mientras cargamos la próxima página, utilizaremos el hook useRouter de NextJS que nos proveerá de una serie de event listeners a los que podemos suscribirnos y hacer acciones en respuesta a un cambio de ruta.
Para mostrar la barra de carga, utilizaremos NProgress:
npm install nprogress
Lo siguiente que haremos es crear un custom hook que llamaremos useLoading. Dentro del hook, nos suscribiremos a los eventos del router. Cuando el path cambie, ejecutaremos NProgress.start() para mostrar la barra de carga y cuando haya terminado de cargarse la ruta, ejecutaremos NProgress.done() para ocultarla.
Para mostrar la barra de carga en todas las páginas, necesitamos añadir los estilos de NProgress globalmente. Recuerda importar ese fichero .css en _app.tsx:
Por último, importaremos nuestro custom hook en cada página. Una buena idea es crearte un componente Layout que importe el hook y que reciba el contenido de cada página como children. De esta forma lo reutilzamos de una forma mas cómoda.
date: "2020-04-25" img: "https://res.cloudinary.com/ivanbtrujillo/image/upload/c_fill,h_224,w_429/v1590083428/photo-1588007375246-3ee823ef4851_jbrtfv" summary: Aprenderemos como añadir una barra de carga en NextJS que sea reutilizable en distintas páginas usando un custom hook (useLoading).
Para mostrar una barra de carga mientras cargamos la próxima página, utilizaremos el hook useRouter de NextJS que nos proveerá de una serie de event listeners a los que podemos suscribirnos y hacer acciones en respuesta a un cambio de ruta.
Para mostrar la barra de carga, utilizaremos NProgress:
Lo siguiente que haremos es crear un custom hook que llamaremos useLoading. Dentro del hook, nos suscribiremos a los eventos del router. Cuando el path cambie, ejecutaremos NProgress.start() para mostrar la barra de carga y cuando haya terminado de cargarse la ruta, ejecutaremos NProgress.done() para ocultarla.
useLayout.tsx
Para mostrar la barra de carga en todas las páginas, necesitamos añadir los estilos de NProgress globalmente. Recuerda importar ese fichero .css en _app.tsx:
Por último, importaremos nuestro custom hook en cada página. Una buena idea es crearte un componente Layout que importe el hook y que reciba el contenido de cada página como children. De esta forma lo reutilzamos de una forma mas cómoda.
Y esto es tódo. Espero que te haya gustado y si tienes alguna duda, no dudes en dejarla en los comentarios o escribirme en twitter a @ivanbtrujillo.