React文檔(二十)不使用JSX

JSX並非使用React的一個強制需求。當你不須要在你的構造環境裏設置編譯那麼不使用JSX會很方便。react

每個JSX元素只是調用React.createElement(componnet, props, ...children)的語法糖。所以,JSX能作的事原生js一樣也作獲得。babel

舉個例子,下面的代碼用JSX:函數

class Hello extends React.Component {
  render() {
    return <div>Hello {this.props.toWhat}</div>;
  }
}

ReactDOM.render(
  <Hello toWhat="World" />,
  document.getElementById('root')
);
若是不使用JSX能夠被編譯成這樣的代碼:
class Hello extends React.Component {
  render() {
    return React.createElement('div', null, `Hello ${this.props.toWhat}`);
  }
}

ReactDOM.render(
  React.createElement(Hello, {toWhat: 'World'}, null),
  document.getElementById('root')
);

若是你好奇想看更多的例子JSX被轉變成js,你能夠試一試在線Babel編譯器this

組件要麼被提供爲一個字符串,要麼是一個React.Component子類,要麼是一個無狀態組件的函數。lua

若是你已經厭倦了React.createElement方法,一個普通模式是使用簡寫:spa

const e = React.createElement;

ReactDOM.render(
  e('div', null, 'Hello World'),
  document.getElementById('root')
);

若是你對React.createElement使用這種簡寫,那麼不使用JSX語法也同樣方便。code

其它選擇的話,你能夠去參考社區上的項目例如react-hyperscript和 hyperscript-helpers 。它們都提供了一些簡潔的語法。
相關文章
相關標籤/搜索