--- id: 5a24c314108439a4d4036166 title: Compose React Components challengeType: 6 isRequired: false videoUrl: '' localeTitle: Compor Reagir Componentes --- ## Description
Como os desafios continuam a usar composições mais complexas com componentes React e JSX, há um ponto importante a ser observado. A renderização de componentes de classe de estilo ES6 dentro de outros componentes não é diferente de renderizar os componentes simples que você usou nos últimos desafios. Você pode renderizar elementos JSX, componentes funcionais stateless e componentes de classe ES6 em outros componentes.
## Instructions
No editor de código, o componente TypesOfFood já está renderizando um componente chamado Vegetables . Além disso, há o componente Fruits do último desafio. Nest dois componentes dentro de Fruits - primeiro NonCitrus e, em seguida, Citrus . Ambos os componentes são fornecidos para você em segundo plano. Em seguida, aninhe o componente de classe Fruits no componente TypesOfFood , abaixo do cabeçalho h1 e acima de Vegetables . O resultado deve ser uma série de componentes aninhados, que usa dois tipos de componentes diferentes.
## Tests
```yml tests: - text: O componente TypesOfFood deve retornar um único elemento div . testString: 'assert((function() { const mockedComponent = Enzyme.mount(React.createElement(TypesOfFood)); return mockedComponent.children().type() === "div"; })(), "The TypesOfFood component should return a single div element.");' - text: O componente TypesOfFood deve retornar o componente Fruits . testString: 'assert((function() { const mockedComponent = Enzyme.mount(React.createElement(TypesOfFood)); return mockedComponent.children().childAt(1).name() === "Fruits"; })(), "The TypesOfFood component should return the Fruits component.");' - text: O componente Fruits deve retornar o componente NonCitrus e o componente Citrus . testString: 'assert((function() { const mockedComponent = Enzyme.mount(React.createElement(TypesOfFood)); return (mockedComponent.find("Fruits").children().find("NonCitrus").length === 1 && mockedComponent.find("Fruits").children().find("Citrus").length === 1); })(), "The Fruits component should return the NonCitrus component and the Citrus component.");' - text: O componente TypesOfFood deve retornar o componente Vegetables abaixo do componente Fruits . testString: 'assert((function() { const mockedComponent = Enzyme.mount(React.createElement(TypesOfFood)); return mockedComponent.children().childAt(2).name() === "Vegetables"; })(), "The TypesOfFood component should return the Vegetables component below the Fruits component.");' ```
## Challenge Seed
```jsx class Fruits extends React.Component { constructor(props) { super(props); } render() { return (

Fruits:

{ /* change code below this line */ } { /* change code above this line */ }
); } }; class TypesOfFood extends React.Component { constructor(props) { super(props); } render() { return (

Types of Food:

{ /* change code below this line */ } { /* change code above this line */ }
); } }; ```
### Before Test
```jsx class NonCitrus extends React.Component { render() { return (

Non-Citrus:

  • Apples
  • Blueberries
  • Strawberries
  • Bananas
); } }; class Citrus extends React.Component { render() { return (

Citrus:

  • Lemon
  • Lime
  • Orange
  • Grapefruit
); } }; class Vegetables extends React.Component { render() { return (

Vegetables:

  • Brussel Sprouts
  • Broccoli
  • Squash
); } }; ```
### After Test
```js console.info('after the test'); ```
## Solution
```js // solution required ```