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

357
Views
Reaccionar mostrando 0 en lugar de nada con el componente condicional de cortocircuito (&&)

Tengo la siguiente declaración simple de cortocircuito que debería mostrar un componente o nada:

{profileTypesLoading && <GeneralLoader />}

Si la declaración es falsa, muestra un 0 en lugar de nada.

Hice un console.log(profileTypesLoading) solo para ver rápidamente cuál es el estado de la propiedad profileTypesLoading y es 1 o 0 como se esperaba. 0 debería ser falso... causando que nada se renderice. ¿Derecha?

Alguna idea de por qué esto pasaría?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Dado que su condición es falsa y, por lo tanto, no devuelve el segundo argumento ( <GeneralLoader /> ), devolverá profileTypesLoading , que es un número, por lo que reaccionar lo representará porque React omite la representación de todo lo que sea de boolean typeof undefined y lo hará representar cualquier cosa que sea typeof string o number :

Para que sea seguro, puede usar una expresión ternaria {condition ? <Component /> : null} o booleano emita su condición como {!!condition && <Component />}

over 4 years ago · Santiago Trujillo Report

0

0 es un valor falso, por lo que cuando es evaluado por && , devuelve 0. Sin embargo, React puede representar 0 porque es un número:

 // Renderable values 1 && <GeneralLoader /> // => Renders <GeneralLoader /> "a string" && <GeneralLoader /> // => Renders <GeneralLoader /> 0 && <GeneralLoader /> // => Renders '0' // Non-renderable values false && <GeneralLoader /> // => Renders nothing null && <GeneralLoader /> // => Renders nothing undefined && <GeneralLoader /> // => Renders nothing

TLDR

Esto se debe a cómo javascript procesa [valores verdaderos y falsos ][1]:

En JavaScript, un valor veraz es un valor que se considera verdadero cuando se encuentra en un contexto booleano. Todos los valores son verdaderos a menos que se definan como falsos (es decir, excepto falso, 0, "", nulo, indefinido y NaN).

Cuando se usa con el operador && , el valor devuelto depende del valor de la izquierda:

  • Si el valor de la izquierda es verdadero, se devuelve el valor de la derecha.
  • Si el valor de la izquierda es falso, se devuelve su valor.

Ejemplos:

 // Truthy values 1 && "hello" // => "hello" "a string" && "hello" // => "hello" // Falsy values 0 && "hello" // => 0 false && "hello" // => false null && "hello" // => null undefined && "hello" // => undefined

Las mismas reglas se aplican a JSX porque es [una extensión de sintaxis de JavaScript][2]. Sin embargo, el problema es que **

El problema es que 0 es un valor falso, por lo que cuando && lo evalúa, devuelve 0. Sin embargo, React puede representar 0 porque es un número.

 // Renderable values 1 && <GeneralLoader /> // => Renders <GeneralLoader /> "a string" && <GeneralLoader /> // => Renders <GeneralLoader /> 0 && <GeneralLoader /> // => Renders 0 // Non-renderable values false && <GeneralLoader /> // => Renders nothing null && <GeneralLoader /> // => Renders nothing undefined && <GeneralLoader /> // => Renders nothing
over 4 years ago · Santiago Trujillo Report

0

Esto resolvería el problema:

 {!!profileTypesLoading && <GeneralLoader />}

Como convertirá 0 en falso. La razón es que cuando es 0 , la siguiente condición no se ejecuta y se comporta como un número en JavaScript, por lo que la doble negación ayuda aquí.

over 4 years ago · Santiago Trujillo 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!