React. Реакт. Тестовая задача 024. Создание компонента через React.createElement()





Преобразование HTML в JSX

Разберёмся, что здесь происходит:

function FlowerForm() {
  // 1. Создаём состояние
  const [flower, setFlower] = useState('');

  // 2. Обработчик изменения ввода
  const handleChange = (e) => {
    setFlower(e.target.value);
  };

  return React.createElement(
    React.Fragment,
    null,
    React.createElement(
      'div',
      { className: 'question' },
      React.createElement('label', { htmlFor: 'flower' }, 'Ваш любимый цветок: '),
      React.createElement('input', {
        type: 'text',
        id: 'flower',
        value: flower,
        onChange: handleChange
      })
    ),
    React.createElement(
      'p',
      null,
      'Ваш любимый цветок: ',
      React.createElement('span', { className: 'answer' }, flower)
    )
  );
}

// Если нужно отрендерить компонент
root.render(React.createElement(FlowerForm));


Преобразование HTML в JSX.

<div class="question">
  <label for="flower">Ваш любимый цветок: </label>
  <input type="text" id="flower" />
</div>
<p>Ваш любимый цветок: <span class="answer"></span></p> 


С учётом всех особенностей, которые вы изучили в этом уроке, получится такой код:

<>
  <div className="question">
    <label htmlFor="flower">Ваш любимый цветок: </label>
    <input type="text" id="flower" />
  </div>
  <p>Ваш любимый цветок: <span className="answer" /></p>
</> 


В некоторых компаниях верстальщик — это отдельная профессия и обычно он переводит макет в HTML-страницу. А вот HTML-страницу предстоит оживлять и переводить в JSX именно вам.

Некоторые IDE преобразовывают HTML в JSX автоматически (например, WebStorm). VS Code по умолчанию этого не делает, но можно установить плагин (например, HTML to JSX). Также существуют онлайн-конвертеры HTML в JSX (например, transform.tools).