十八、不使用JSX編寫React應用
React並不是強制要求使用JSX來編寫應用。 當您不想在構建時設定並編譯JSX,那麼在開發階段只是單獨使用React而不去使用JSX會讓應用在構建時變得特別方便。
每個JSX元素只是呼叫React.createElement(component,props,... children)
的語法糖。 所以,你用JSX做的任何事也可以使用純Javascript來完成。
例如,使用JSX編寫一個元件:
class Hello extends React.Component {
render() {
return <h1>hello zhangyatao</h1>;
}
}
ReactDOM.render(<Hello />, document.getElementById(`root`));
上面這段程式碼會被編譯為下面這樣:
class Hello extends React.Component {
render() {
return React.createElement(`h1`, null, `hello zhangyatao`);
}
}
ReactDOM.render(<Hello />, document.getElementById(`root`));
如果你很想看到更多的JSX如何轉換成JavaScript的例子,你可以試試線上Babel編譯器。
元件可以是一個字串,也可以是繼承了React.Component
的子類,或者是一個沒有內部狀態的純函式。
如果您不喜歡一直重複地寫React.createElement
,可以使用一個變數代替它:
const makeE = React.createElement;
ReactDOM.render(
makeE(`h1`, null, `hello zhangyatao`),
document.getElementById(`root`)
)
如果您在使用React.createElement
時用了這種方式,那麼即便不使用JSX來編寫React也是很方便的。