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

223
Views
Reaccionar: el estado tiene un valor diferente dependiendo de dónde preguntes

Tengo una lista de botones que cambian un estado, una cadena (que se usa para decidir si se muestra un modal y como título para este modal). Qué debería pasar :

    1. si no se muestra el modal, al hacer clic en cualquiera de estos botones se debe abrir el modal y establecer su título.
    1. si se muestra el modal y se vuelve a hacer clic en el mismo botón que lo abrió, el modal debería cerrarse (título borrado).
    1. si se muestra el modal y se hace clic en otro botón, el modal debe permanecer pero su título debe cambiar (título cambiado).

Los puntos 1 y 3 funcionan bien. Pero 2 no lo es. Así que decidí poner algunos console.logs allí. Si inicio sesión dentro de un useEffect vinculado a mi estado: el estado del título cambia en cada clic de botón que debería cambiarlo pero nunca se borra.

Así que inicié sesión dentro de la función del controlador (activada cuando se hace clic en un botón):

  • El estado del título siempre aparece como una cadena vacía, incluso si hay un título dentro del modal.

Así que ahí está, no tiene ningún sentido para mí. Aquí hay partes de mi código si ayuda:

 const [logsModalTitle, setLogsModalTitle] = useState(""); ... const handlingLogs = (inputClause) => { console.log("handling logs : ", showLogsModal, logsModalTitle); if (`${inputClause.name}(${inputClause.label})` === logsModalTitle) { setLogsModalTitle(""); } else { setLogsModalTitle(`${inputClause.name}(${inputClause.label})`); } }; ... <MyCustomButton buttonInnerText="ERROR" buttonSize="medium" buttonActionFunctionOne={handlingLogs} buttonActionPropOne={input.clauses[i]} /> ... useEffect(() => { console.log(logsModalTitle); }, [logsModalTitle]);

¿Alguna idea sobre lo que está causando este problema?

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

0

en mi opinión, es un código realmente extraño, pero esto puede funcionar:

 const handlingLogs = (inputClause) => { if (`${inputClause.name}(${inputClause.label})` === logsModalTitle) { setLogsModalTitle(""); setShowLogsModal(false); } else { setShowLogsModal(true); setLogsModalTitle(`${inputClause.name}(${inputClause.label})`); } };

y puede usar solo un estado como showLogsModal = logsModalTitle !== "";

 const [logsModalTitle, setLogsModalTitle] = useState(""); const handlingLogs = (inputClause) => { if (`${inputClause.name}(${inputClause.label})` === logsModalTitle) { setLogsModalTitle(""); } else { setLogsModalTitle(`${inputClause.name}(${inputClause.label})`); } }; const showLogsModal = logsModalTitle !== "";
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!