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

161
Views
¿Cómo puedo usar prevState en un estado con múltiples argumentos?

Verás, en este momento estoy desarrollando un showMorePost que anteriormente había hecho con éxito, pero esta vez lo reformulé uniendo todos los estados que tenía en uno con varios argumentos

 const [state, setState] = useState({ postsToShow: [], hover: false, count: 1 }); const loopThroughPosts = (count) => { for ( let i = count * postsPerPage - postsPerPage; i < postsPerPage * count; i++ ) { if (posts[i] !== undefined) { arrayForHoldingPosts.push(posts[i]); } } setState({ ...state, postsToShow: arrayForHoldingPosts }); }; // load the first set of posts when the page loads // and then set the value of count to 2 useEffect(() => { setState((prevState) => ({ ...prevState, count: prevState + 1 })); loopThroughPosts(state.count); }, []); const handleShowMorePosts = () => { setState((prevState) => ({ ...prevState, count: prevState + 1 })); loopThroughPosts(state.count); }; return ( <div> <Posts postsToRender={state.postsToShow} /> <button onClick={handleShowMorePosts} onMouseEnter={() => setState({ ...state, hover: true }) } onMouseLeave={() => setState({ ...state, hover: false }) } > Load more </button> </div> ); };

El problema es que ahora en lugar de traerme las publicaciones que siguen al llamar al handleShowMorePosts , genera un bucle infinito en el que, cada vez que llamo a la función, repite las primeras tres publicaciones.

Aquí está el código: https://codesandbox.io/s/sad-dust-pybbe?file=/src/App.js:193-2128

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

0

Espero que sirva de enlace . Como forma de agradecimiento, márquelo como útil.

PD. No estoy seguro de por qué necesita información sobre el desplazamiento, pero no lo eliminé.

about 4 years ago · Juan Pablo Isaza Report

0

setState((prevState) => ({ ...prevState, count: prevState + 1 }));

debiera ser

 setState((prevState) => ({ ...prevState, count: prevState.count + 1 }));

Como está escrito actualmente, está agregando prevState (un objeto) a 1 (un número entero), por lo que está viendo un comportamiento extraño.

Suma

Después de una mirada más cercana... también tiene una condición de carrera en la que está configurando el estado usando una devolución de llamada (la mencionada anteriormente) y luego, casi inmediatamente, configurando el estado nuevamente en la función loopThroughPosts . Esa segunda vez de establecer el estado es esencialmente mantener el valor de count en 1 , lo que se puede ver al registrar ese valor en la consola. Recomendaría dividir el estado como lo tenía originalmente para mantener sus actualizaciones para count y las publicaciones para postsToShow separadas entre sí. Si tiene una razón definida para tener el escenario junto, su componente requerirá una refactorización.

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!