3.7 React без JSX

JSX не является обязательным при использовании React. Использование React без JSX особенно удобно, если вы не хотите настраивать компиляцию в своей среде сборки.

Каждый элемент JSX является просто синтаксическим сахаром для вызова React.createElement(component, props, ...children). Так что, всё, что вы можете сделать с помощью JSX, также можно выполнить и с помощью простого JavaScript.

Например, этот код, написанный с помощью JSX:


Код
    
  class MessageBox extends React.Component {
    render() {
      return <div>{this.props.message}</div>;
    }
  }

  ReactDOM.render(
    <MessageBox message="Привет, мир!" />,
    document.getElementById('root')
  );
  

Может быть скомпилирован в код, который не использует JSX:


Код
    
  class MessageBox extends React.Component {
    render() {
      return React.createElement('div', null, this.props.message);
    }
  }

  ReactDOM.render(
    React.createElement(MessageBox, {message: 'Привет, мир!'}, null),
    document.getElementById('root')
  );
  

Если вы хотите увидеть больше примеров того, как JSX преобразуется в JavaScript, вы можете попробовать онлайн-компилятор Babel.

Компонент может быть предоставлен в виде строки, в качестве подкласса React.Component или простой функции для компонентов без состояния.

Если вам надоело каждый раз набирать руками React.createElement, можно использовать общий паттерн - назначить сокращенное название:


Код
    
  const elem = React.createElement;

  ReactDOM.render(elem('div', null, 'Привет, мир!'), document.getElementById('root'));
  

Если вы используете такую сокращенную форму для React.createElement, то использование React может оказаться почти таким же удобным и без JSX.

Как альтернатива, вы можете ссылаться на комьюнити-проекты, такие как react-hyperscript и hyperscript-helpers , которые предлагают краткий синтаксис.