JSX не является обязательным для работы с React. React можно использовать без JSX. Это особенно удобно, когда вы не хотите настраивать транспиляцию в процессе сборки.
Каждый JSX-элемент — это просто синтаксический сахар для вызова React.createElement(component, props, ...children)
. Так что всё, что вы можете сделать при помощи JSX, может быть сделано на чистом JavaScript.
Например, вот код с JSX:
class Hello extends React.Component { render() { return <div>Привет, {this.props.toWhat}</div>; } } ReactDOM.render( <Hello toWhat="мир" />, document.getElementById('root') );
Он может быть превращён в код без JSX:
class Hello extends React.Component { render() { return React.createElement('div', null, `Привет, ${this.props.toWhat}`); } } ReactDOM.render( React.createElement(Hello, {toWhat: 'мир'}, null), document.getElementById('root') );
Если вас интересуют другие примеры того, как JSX превращается в JavaScript, вы можете попробовать онлайн-компилятор Babel.
Компонент может быть представлен в виде строки, класса-наследника от React.Component
или обычной функции в случае компонента без состояния.
Если вас утомляет печатать React.createElement
, то распространённой практикой является создать сокращение:
const e = React.createElement; ReactDOM.render( e('div', null, 'Привет, мир!'), document.getElementById('root') );
Если вы примените эту сокращённую форму для React.createElement
, то использование React без JSX станет почти таким же удобным, как вы привыкли.
Кроме того, вы можете посмотреть на такие проекты как react-hyperscript
и hyperscript-helpers
, которые предлагают короткий синтаксис.