--- id: 5a24c314108439a4d4036166 title: Compose React Components challengeType: 6 isRequired: false videoUrl: '' localeTitle: Componer React Componentes --- ## Description
A medida que los desafíos continúan utilizando composiciones más complejas con componentes React y JSX, hay un punto importante a tener en cuenta. La representación de los componentes de la clase de estilo ES6 dentro de otros componentes no es diferente de la representación de los componentes simples que usó en los últimos desafíos. Puede representar elementos JSX, componentes funcionales sin estado y componentes de clase ES6 dentro de otros componentes.
## Instructions
En el editor de código, el componente TypesOfFood ya está representando un componente llamado Vegetables . Además, está el componente Fruits del último desafío. Anide dos componentes dentro de Fruits : primero NonCitrus y luego Citrus . Ambos componentes se proporcionan para usted en el fondo. A continuación, anide el componente de la clase Fruits en el componente TypesOfFood , debajo del encabezado h1 y encima de Vegetables . El resultado debe ser una serie de componentes anidados, que utiliza dos tipos de componentes diferentes.
## Tests
```yml tests: - text: El componente TypesOfFood debe devolver un ú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: El componente TypesOfFood debe devolver el 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: El componente Fruits debe devolver el componente NonCitrus y el 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: El componente TypesOfFood debe devolver el componente Vegetables debajo del 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 ```