Detectar click en el botón atrás utilizando React useEffect y useState

Share this video with your friends

Social Share Links

Send Tweet
Published 4 years ago
Updated 3 years ago

Al trabajar en la navegación de una aplicación web, es común necesitar manejar el botón atrás, en esta situación, saber cuándo se hizo click es necesario. En este ejemplo se utilizar react-router para crear una pequeña aplicación con una navegación por secciones y creamos un component que utiliza el manejador de evento window.onpopstate dentro del hook useEffect para detectar el click del botón.

Matías Hernández: [0:02] Esta es una pequeña aplicación que utiliza react-router para mostrar diferentes links y secciones. Contiene un Switch sobre tres rutas. Cada una de ellas muestra un contenido diferente.

[0:16] Para escuchar el botón regresar o Back button, creamos un componente que llamamos BackButtonListener. En él utilizaremos los hook useEffect y useState.

[0:24] Primero, definiremos un estado con useState, que retorna una dupla cuyo primer valor es el valor del estado, que llamaremos pressed, y el segundo valor en la función dispatch, que llamaremos setPressed. El estado inicia con un valor false.

[0:39] Ahora utilizaremos el hook useEffect para agregar el manejador de eventos onpopstate del objeto window. El evento onpopstate es un efecto secundario. onpopstate se define como una función manejadora. En ella utilizaremos la función dispatch setPressed para cambiar el estado a true.

[0:59] Ahora simplemente renderizamos el valor de la variable pressed, que es un booleano y utilizamos toString para desplegarlo en pantalla.

egghead
egghead
~ 21 minutes ago

Member comments are a way for members to communicate, interact, and ask questions about a lesson.

The instructor or someone from the community might respond to your question Here are a few basic guidelines to commenting on egghead.io

Be on-Topic

Comments are for discussing a lesson. If you're having a general issue with the website functionality, please contact us at support@egghead.io.

Avoid meta-discussion

  • This was great!
  • This was horrible!
  • I didn't like this because it didn't match my skill level.
  • +1 It will likely be deleted as spam.

Code Problems?

Should be accompanied by code! Codesandbox or Stackblitz provide a way to share code and discuss it in context

Details and Context

Vague question? Vague answer. Any details and context you can provide will lure more interesting answers!

Markdown supported.
Become a member to join the discussionEnroll Today