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

104
Vistas
Comparando dos valores de Dropdown

Tengo un menú desplegable desde el que paso el valor del nombre OnClick

 onClick={() => clicked(v.Name)

Luego, en el evento en el que se hizo clic, quiero comparar que el valor de entrada no es el mismo que el valor anterior, pero esto falla porque no puedo actualizar oldName después de comparar los valores. Probablemente hay una mejor lógica para esto. También probé UseEffect y UseState pero tendían a actualizarse con los valores anteriores.

función DropdownComponent () {

 var oldName; function clicked(Name) { if (Name === oldName) { console.log("Same Clicked!"); } else { console.log("Differet Clicked!"); setTitleName(Name) } return oldName = (Name); //can't update } return ( <Dropdown //dropdown component }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Cualquier cosa almacenada en una variable local de componente solo existe para ese renderizado. Cada render volverá a declarar la variable. Entonces esta variable:

 var oldName;

Siempre estará undefined en cada render. Las variables locales de componentes pueden ser útiles para el almacenamiento temporal. Por ejemplo, puede realizar una lógica de clasificación/filtrado en una matriz y almacenar los resultados en variables con el fin de asignar esas variables a los componentes de la interfaz de usuario en el procesamiento, separando efectivamente la lógica de clasificación/filtrado de la lógica de representación.

Pero esas variables no persisten en los renderizados.

Si desea que algo se conserve en los renderizados, debe mantenerlo en estado. Lo que parece que ya estás haciendo aquí:

 setTitleName(Name)

El código que se muestra no incluye esto, pero presumiblemente en algún lugar estás creando un valor de estado como este:

 const [titleName, setTitleName] = useState('');

Si asumimos que este "nombre del título" es un valor de estado, entonces ya tiene el "valor anterior", es el que está manteniendo en estado. Así que solo compruébalo con ese:

 function clicked(name) { if (name === titleName) { console.log("Same Clicked!"); } else { console.log("Differet Clicked!"); setTitleName(name); } }

Demo en vivo

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