--- id: 5a24c314108439a4d4036167 title: Render a Class Component to the DOM challengeType: 6 isRequired: false videoUrl: '' localeTitle: Отобразить компонент класса в DOM --- ## Description
Вы можете вспомнить использование ReactDOM API в более ранней попытке визуализации элементов JSX в DOM. Процесс рендеринга компонентов React будет выглядеть очень похоже. Последние несколько проблем были сосредоточены на компонентах и ​​составе, поэтому рендеринг был сделан для вас за кулисами. Однако ни один из написанного вами кода React не будет отображаться в DOM без обращения к ReactDOM API. Ниже приведен синтаксис: ReactDOM.render(componentToRender, targetNode) . Первый аргумент - это компонент React, который вы хотите отобразить. Второй аргумент - это узел DOM, который вы хотите отобразить внутри этого компонента. Компоненты React передаются в ReactDOM.render() несколько иначе, чем элементы JSX. Для элементов JSX вы передаете имя элемента, который вы хотите отобразить. Однако для компонентов React вам нужно использовать тот же синтаксис, как если бы вы отображали вложенный компонент, например ReactDOM.render(<ComponentToRender />, targetNode) . Этот синтаксис используется для компонентов класса ES6 и функциональных компонентов.
## Instructions
Компоненты « Fruits и Vegetables определены для вас за кулисами. Выделите оба компонента как дочерние TypesOfFood компонента TypesOfFood , а затем визуализируйте TypesOfFood в DOM. Для вас доступен div с id='challenge-node' .
## 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 после элемента h1 . testString: 'assert((function() { const mockedComponent = Enzyme.mount(React.createElement(TypesOfFood)); return mockedComponent.children().childAt(1).name() === "Fruits"; })(), "The TypesOfFood component should render the Fruits component after the h1 element.");' - 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 render the Vegetables component after Fruits.");' - text: Компонент TypesOfFood должен отображать DOM внутри div с идентификационным challenge-node id. testString: 'assert((function() { const html = document.getElementById("challenge-node").childNodes[0].innerHTML; return (html === "

Types of Food:

Fruits:

Non-Citrus:

Citrus:

Vegetables:

"); })(), "The TypesOfFood component should render to the DOM within the div with the id challenge-node.");' ```
## Challenge Seed
```jsx class TypesOfFood extends React.Component { constructor(props) { super(props); } render() { return (

Types of Food:

{/* change code below this line */} {/* change code above this line */}
); } }; // change code below this line ```
### Before Test
```jsx const Fruits = () => { return (

Fruits:

Non-Citrus:

  • Apples
  • Blueberries
  • Strawberries
  • Bananas

Citrus:

  • Lemon
  • Lime
  • Orange
  • Grapefruit
); }; const Vegetables = () => { return (

Vegetables:

  • Brussel Sprouts
  • Broccoli
  • Squash
); }; ```
## Solution
```js // solution required ```