2021-06-15 00:49:18 -07:00
---
id: 5a24bbe0dba28a8d3cbd4c5d
2021-07-30 23:57:21 +09:00
title: Criar um elemento JSX complexo
2021-06-15 00:49:18 -07:00
challengeType: 6
forumTopicId: 301382
dashedName: create-a-complex-jsx-element
---
# --description--
2021-07-16 15:47:08 +05:30
O último desafio foi um exemplo simples de JSX, mas JSX também pode representar HTML mais complexo.
2021-06-15 00:49:18 -07:00
2021-07-16 15:47:08 +05:30
Uma coisa importante a saber sobre JSX aninhado é que ele deve retornar um único elemento.
2021-06-15 00:49:18 -07:00
2021-07-16 15:47:08 +05:30
Este único elemento pai envolveria todos os outros níveis de elementos aninhados.
2021-06-15 00:49:18 -07:00
2021-07-30 23:57:21 +09:00
Por exemplo, vários elementos JSX escritos como irmãos sem elemento encapsulador pai não vão transpilar.
2021-06-15 00:49:18 -07:00
2021-07-26 23:39:21 +09:00
Exemplo:
2021-06-15 00:49:18 -07:00
2021-07-16 15:47:08 +05:30
**JSX válido:**
2021-06-15 00:49:18 -07:00
```jsx
< div >
< p > Paragraph One< / p >
< p > Paragraph Two< / p >
< p > Paragraph Three< / p >
< / div >
```
2021-07-16 15:47:08 +05:30
**JSX inválido:**
2021-06-15 00:49:18 -07:00
```jsx
< p > Paragraph One< / p >
< p > Paragraph Two< / p >
< p > Paragraph Three< / p >
```
# --instructions--
2021-07-16 15:47:08 +05:30
Defina uma nova constante `JSX` que renderiza uma `div` a qual contém os elementos a seguir em ordem:
2021-06-15 00:49:18 -07:00
2021-07-16 15:47:08 +05:30
Um `h1` , um `p` , e uma lista não ordenada que contém três itens `li` . Você pode incluir qualquer texto que você quiser dentro de cada elemento.
2021-06-15 00:49:18 -07:00
2021-07-29 02:37:39 +09:00
**Observação:** ao renderizar vários elementos como este, você pode envolver todos entre parênteses, mas não é estritamente necessário. Note também que este desafio usa uma tag `div` para encapsular todos os elementos filhos dentro de um único elemento pai. Se você remover a `div` , o JSX não será mais transpilável. Tenha isso em mente, uma vez que ele também será aplicado quando você retornar elementos JSX em componentes React.
2021-06-15 00:49:18 -07:00
# --hints--
2021-07-16 15:47:08 +05:30
A constante `JSX` deve retornar um elemento `div` .
2021-06-15 00:49:18 -07:00
```js
assert(JSX.type === 'div');
```
2021-08-20 00:00:51 -07:00
A `div` deve conter uma tag `h1` como o primeiro elemento.
2021-06-15 00:49:18 -07:00
```js
assert(JSX.props.children[0].type === 'h1');
```
2021-07-16 15:47:08 +05:30
A `div` deve conter uma tag `p` como o segundo elemento.
2021-06-15 00:49:18 -07:00
```js
assert(JSX.props.children[1].type === 'p');
```
2021-08-20 00:00:51 -07:00
A `div` deve conter uma tag `ul` como o terceiro elemento.
2021-06-15 00:49:18 -07:00
```js
assert(JSX.props.children[2].type === 'ul');
```
2021-07-16 15:47:08 +05:30
O `ul` deve conter três elementos `li` .
2021-06-15 00:49:18 -07: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--
```jsx
```
# --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 > );
```