Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

222
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda