--- id: 5a24c314108439a4d4036166 title: Compose React Components challengeType: 6 isRequired: false videoUrl: '' localeTitle: Компоновка компонентов реакции --- ## Description
Поскольку проблемы продолжают использовать более сложные композиции с компонентами React и JSX, есть еще один важный момент. Рендеринг компонентов класса стиля ES6 в других компонентах ничем не отличается от рендеринга простых компонентов, которые вы использовали в последних нескольких задачах. Вы можете отображать элементы JSX, функциональные компоненты без состояния и компоненты класса ES6 в других компонентах.
## Instructions
В редакторе TypesOfFood компонент TypesOfFood уже выполняет компонент под названием « Vegetables . Кроме того, из последней задачи есть компонент Fruits . Гнездо два компонента внутри Fruits - сначала NonCitrus , а затем Citrus . Оба этих компонента предоставляются вам в фоновом режиме. Затем TypesOfFood компонент класса Fruits компонент TypesOfFood , ниже заголовка h1 и выше Vegetables . Результатом должен быть ряд вложенных компонентов, который использует два разных типа компонентов.
## Tests
```yml tests: - text: Компонент TypesOfFood должен возвращать один элемент 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: Компонент TypesOfFood должен вернуть компонент 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: Компонент Fruits должен вернуть компонент NonCitrus компонент 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: Компонент TypesOfFood должен вернуть компонент « Vegetables ниже компонента « 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 ```