2021-02-06 04:42:36 +00:00
---
id: 5a24bbe0dba28a8d3cbd4c5d
2021-06-21 19:13:43 +05:30
title: Crea un elemento JSX complejo
2021-02-06 04:42:36 +00:00
challengeType: 6
forumTopicId: 301382
dashedName: create-a-complex-jsx-element
---
# --description--
2021-06-21 19:13:43 +05:30
El último desafío fue un ejemplo sencillo de JSX, pero JSX también puede representar HTML más complejo.
2021-02-06 04:42:36 +00:00
2021-06-21 19:13:43 +05:30
Una cosa importante que debes saber sobre JSX anidado es que debe devolver un solo elemento.
2021-02-06 04:42:36 +00:00
2021-06-21 19:13:43 +05:30
Este elemento principal contendría a todos los demás niveles de elementos anidados.
2021-02-06 04:42:36 +00:00
2021-06-21 19:13:43 +05:30
Por ejemplo, varios elementos JSX escritos al mismo nivel sin elemento contenedor principal no se transpilarán.
2021-02-06 04:42:36 +00:00
2021-06-21 19:13:43 +05:30
Aquí va un ejemplo:
2021-02-06 04:42:36 +00:00
2021-06-21 19:13:43 +05:30
**JSX válido:**
2021-02-06 04:42:36 +00:00
```jsx
< div >
< p > Paragraph One< / p >
< p > Paragraph Two< / p >
< p > Paragraph Three< / p >
< / div >
```
2021-06-21 19:13:43 +05:30
**JSX inválido:**
2021-02-06 04:42:36 +00:00
```jsx
< p > Paragraph One< / p >
< p > Paragraph Two< / p >
< p > Paragraph Three< / p >
```
# --instructions--
2021-06-21 19:13:43 +05:30
Define una nueva constante `JSX` que renderice un `div` que contenga los siguientes elementos en orden:
2021-02-06 04:42:36 +00:00
2021-06-21 19:13:43 +05:30
Un `h1` , un `p` y una lista desordenada que contiene tres elementos `li` . Puedes incluir cualquier texto que desees dentro de cada elemento.
2021-02-06 04:42:36 +00:00
2021-09-13 07:13:43 -07:00
**Nota: ** Al renderizar varios elementos de esta forma, puedes envolverlos todos entre paréntesis, pero no es estrictamente necesario. Observa también que este desafío usa una etiqueta `div` para envolver a todos los elementos hijos dentro de un solo elemento principal. Si eliminas el `div` , JSX ya no se podrá transpilar. Ten esto en cuenta, ya que también será así cuando devuelvas elementos JSX en los componentes de React.
2021-02-06 04:42:36 +00:00
# --hints--
2021-06-21 19:13:43 +05:30
La constante `JSX` debe devolver un elemento `div` .
2021-02-06 04:42:36 +00:00
```js
assert(JSX.type === 'div');
```
2021-06-21 19:13:43 +05:30
El `div` debe contener una etiqueta `h1` como primer elemento.
2021-02-06 04:42:36 +00:00
```js
assert(JSX.props.children[0].type === 'h1');
```
2021-06-21 19:13:43 +05:30
El `div` debe contener una etiqueta `p` como segundo elemento.
2021-02-06 04:42:36 +00:00
```js
assert(JSX.props.children[1].type === 'p');
```
2021-06-21 19:13:43 +05:30
El `div` debe contener una etiqueta `ul` como tercer elemento.
2021-02-06 04:42:36 +00:00
```js
assert(JSX.props.children[2].type === 'ul');
```
2021-06-21 19:13:43 +05:30
El `ul` debe contener tres elementos `li` .
2021-02-06 04:42:36 +00:00
```js
assert(
JSX.props.children
.filter((ele) => ele.type === 'ul')[0]
.props.children.filter((ele) => ele.type === 'li').length === 3
);
```
# --seed--
## --after-user-code--
```jsx
ReactDOM.render(JSX, document.getElementById('root'))
```
## --seed-contents--
2021-06-21 19:13:43 +05:30
2021-02-06 04:42:36 +00:00
```jsx
2021-06-21 19:13:43 +05:30
2021-02-06 04:42:36 +00:00
```
# --solutions--
```jsx
const JSX = (
< div >
< h1 > Hello JSX!< / h1 >
< p > Some info< / p >
< ul >
< li > An item< / li >
< li > Another item< / li >
< li > A third item< / li >
< / ul >
< / div > );
```