Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

254
Views
Ejecutar código al hacer clic en el botón Atrás (REACTJS)

El siguiente código se ejecuta cuando navego de una página a otra, por ejemplo. cuando hago clic en un producto de la lista de páginas de categorías, el siguiente código establece una clave de almacenamiento de sesión que tendrá una posición de la página de categorías (cuánto se ha desplazado la página).

Entonces, cuando se abre la página del producto, guarda su clave en la sesión y si nuevamente visitó la misma página de categoría, restaura la posición de la página.

Estoy tratando de hacer que este código guarde solo una clave de sesión y elimine la clave de sesión guardada anteriormente, independientemente de la página en la que el usuario haga clic en el sitio web (es decir, página de categoría, página de producto).

CategoryPage.js

 const [scrollPosition, setScrollPosition] = React.useState(''); React.useEffect(() => { var pathName = document.location.pathname.substr(1); if (window) { window.onscroll = function (e) { setScrollPosition(window.scrollY); if(scrollPosition != 0){ sessionStorage.setItem("scrollPosition_"+pathName, scrollPosition); } }; } }, [scrollPosition]); React.useEffect(() => { var pathName = document.location.pathname.substr(1); if (window && sessionStorage.getItem("scrollPosition_"+pathName)) { $(window).scrollTop(sessionStorage.getItem('scrollPosition_'+ pathName)); console.log('position_set to = ' + sessionStorage.getItem('scrollPosition_'+ pathName)); } }, []);

¿Alguna idea sobre esto para eliminar la clave de sesión anterior?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Si está utilizando redux con reaccionar, puede crear un reductor que rastree la ubicación enviando acciones que contengan la información si el usuario estaba en la página del producto.

Algo como esto:

Así que si tienes pocas rutas como:

 /category/house/3213124(product_id) /category/garden/dsfsdfs(product_id)

En su enrutador puede direccionarlos así:

 /category/house/{id} /category/garden/{id}

Entonces puedes usar:

 let { id } = useParams(); if(id !== undefined || ""){ dispatch(userIsOnProductPageAction(true)) }

Cuando los usuarios hacen clic en el botón Atrás usando un selector para reducir, tiene información de que era un usuario en la página del producto... si es verdadero , ejecute el código, si es falso , no haga nada .

Además, después de ejecutar el código, envía userIsOnProductPageAction(false) .

Si no está utilizando redux, puede aplicar la misma lógica, pero el problema es que debe mantener el estado wasUserOnPage y acceder de alguna manera cuando está en la página de categoría.

Como no sé cómo se ve su aplicación React, no puedo decirle cómo lograrlo. Si el producto es un elemento secundario y la categoría es un elemento principal, al hacer clic en el botón Atrás, probablemente podría enviar esa información a través de accesorios.

EDITAR: debería verse algo como esto

 class main extends React.Component { constructor(props) { super(props) this.handler = this.handler.bind(this) } handler() { this.setState({ wasOnProductPage:false }) } render() { return <Category handler = {this.handler} props={this.props.wasOnProductPage} /> <Product handler = {this.handler} /> } } class Category extends React.Component { render() { if(props){ do code for viewport then acitave this.props.handler and set it to false } } } class Product extends React.Component { render() { return <BackButton onClick = {this.props.handler(true)}/ > } }
about 4 years ago · Juan Pablo Isaza Report

0

Lo que entiendo es que al cargar una página, desea:

  1. Si esta página fue la última página visitada: cargue su ubicación guardada.
  2. De lo contrario: elimine la última ubicación guardada y guárdela al desplazarse.

Entonces parece que necesita guardar algún tipo de ID de página con la ubicación que está guardando/cargando. Este identificador único puede ser claramente la URL.

Luego, puede usar una versión similar de su código:

 const [scrollPosition, setScrollPosition] = React.useState(''); const getPathname = () => document.location.pathname.substr(1); React.useEffect(() => { if (window) { window.onscroll = function (e) { setScrollPosition(window.scrollY); if (scrollPosition != 0) { const savedPosition = { position: scrollPosition, pathName: getPathname() }; sessionStorage.setItem('scrollPosition', JSON.stringify(savedPosition)); } }; } }, [scrollPosition]); React.useEffect(() => { const lastSavedPosition = JSON.parse(sessionStorage.getItem('scrollPosition')); if (window && lastSavedPosition && getPathname() === lastSavedPosition.pathName) { $(window).scrollTop(lastSavedPosition.position); console.log(`position_set to = ${lastSavedPosition.position}`); } }, []);
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!