¿Cómo se muestran u ocultan elementos en React? (2023)

¿Cómo se muestran u ocultan elementos en React? (1)

mateo c

El problema

Tiene un elemento que le gustaría mostrar u ocultar, por ejemplo, un elemento que se muestra u oculta cuando un usuario hace clic en un botón. ¿Cómo renderizas condicionalmente un elemento?

La solución

Hay tres formas comunes de representar elementos condicionalmente en JSX: usando el operador lógico AND (&&), usando el operador condicional (ternario) y usando unsideclaración.

Uso del operador lógico AND (&&)

Puedes usar eloperador lógico AND (&&)para renderizar condicionalmente un elemento basado en un valor de estado booleano:

exportar función predeterminada MyComponent() { const [isOpen, setIsOpen] = useState(false); function toggle() { setIsOpen((isOpen) => !isOpen); } return (

{isOpen && }
);}

En el código de ejemplo anterior, el componenteSurgirinicialmente no se muestra. Cuando se hace clic una vez en el botón "Alternar mostrar",Esta abiertose establece en verdadero.micomponentere-renderizados y el componenteSurgirse representa como unReaccionar elemento. Si se vuelve a hacer clic en el botón,Esta abiertose establece en falso y elSurgirel componente no se renderiza.

El problema con el uso de la&&operador es que puede terminar procesando involuntariamente0en lugar de nada si el valor a la izquierda de la&&el operador es0, que sería el caso en el siguiente código si elelementosprop era una matriz sin elementos.

function ItemList({ items }) { return (

    {items.length && items.map((item) =>
  • {item.name}
  • ) }
);}

El&&El operador evalúa los valores que compara, los operandos, de izquierda a derecha. Vuelve inmediatamente con el valor de la primerafalsificacionesvalor que encuentra. Si todos los valores sonveraz, se devuelve el último valor evaluado. Esta es la razón por0se mostraría si el valor deartículos.longitudes 0. La longitud de[]es 0. Puede arreglar esto asegurándose de que el valor sea booleano, por ejemplo:

!!items.length && ...// oritems.length > 0 && ...// orBoolean(items.length) && ...

Uso del operador condicional (ternario)

Puedes usar unoperador ternariopara representar condicionalmente un elemento sin tener que preocuparse por convertir valores a booleanos:

function ItemList({elementos}) { return (

    {elementos.longitud ? elementos.map((elemento) =>
  • {elemento.nombre}
  • ) : nulo}
);}

Usando unsideclaración

También puede utilizar unsiinstrucción en lugar de un operador ternario si prefiere la sintaxis:

function ItemList({ items }) { let itemsElements = null; if (items.length) { itemsElements = items.map((item) =>

  • {item.name}
  • ); } return (
      {elementosElementos}
    );}
    Top Articles
    Latest Posts
    Article information

    Author: Aron Pacocha

    Last Updated: 07/10/2023

    Views: 5321

    Rating: 4.8 / 5 (48 voted)

    Reviews: 95% of readers found this page helpful

    Author information

    Name: Aron Pacocha

    Birthday: 1999-08-12

    Address: 3808 Moen Corner, Gorczanyport, FL 67364-2074

    Phone: +393457723392

    Job: Retail Consultant

    Hobby: Jewelry making, Cooking, Gaming, Reading, Juggling, Cabaret, Origami

    Introduction: My name is Aron Pacocha, I am a happy, tasty, innocent, proud, talented, courageous, magnificent person who loves writing and wants to share my knowledge and understanding with you.