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

75
Vistas
Confusión de los operadores lógicos AND (&&) y OR (||)

Todavía me estoy confundiendo con el operador lógico. Mi caso es que estoy usando el componente React.js como el siguiente:

 const Component = () => { const [data, setData] = useState({ date: "", value: "", }) const [disabled, setDisabled] = useState(true); useEffect(() => { if (data.date !== "" && data.value !== "") { setDisabled(false); } else if (data.date === "" || data.value === "") { setDisabled(true); } }, [data.date, data.value]); return <Button disabled={disabled} /> }

Entonces, mi caso aquí es que tengo un estado que consta de date y value donde recibo una entrada de un usuario. Si la entrada para uno de los estados ( date o value ) está vacía, quiero que el botón esté deshabilitado. Según tengo entendido, el operador lógico debería ser correcto. Lo que sucede ahora es que el Button se habilitará una vez que se hayan completado ambas entradas. Sin embargo, si vacié uno de los campos, no se deshabilita. Solo cuando vacío ambos campos de entrada, el Button se deshabilitará. ¿Qué estoy haciendo mal aquí? Muchas gracias de antemano

ACTUALIZAR Cómo estoy cambiando el estado es por:

 const handleDate = (_, dateString) => { setData({...data, date: dateString}); } <DatePicker onChange={handleDate} /> <InputNumber onChange={(value) => {setData({...data, value: value})} />

*Nota: estoy usando Ant Design Input y Datepicker

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Puede configurar si no tiene fecha o no tiene valor.

 setDisabled(!data.date || !data.value);
about 4 years ago · Juan Pablo Isaza Denunciar

0

En lugar de usar

 else if

usar

 useEffect(() => { if (data.date !== "" && data.value !== "") { setDisabled(false); } else { setDisabled(true); }

}, [datos.fecha, datos.valor]);

Supongo que está usando useState correctamente mientras cambia la fecha y el valor. Mantennos informados ;-)

about 4 years ago · Juan Pablo Isaza Denunciar

0

O significa al menos uno de ellos. Y significa ambos simultáneamente.

Entonces su OR (data.date === "" || data.value === "") significa que cuando al menos uno de ellos está vacío, es verdadero; por lo tanto deshabilitado. Y su AND (data.date !== "" && data.value !== "") significa que si ambos no están vacíos simultáneamente, entonces es verdadero, en cualquier otro caso, falso.

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