在React
中,渲染数据的形式有多种多样,可是万变不离其中,都是用js
。html
// 渲染文本 ReactDom.render( <div>这是一个文本</div>, document.getElementById('app') )
使用babel
转义:babel --plugins transform-react-jsx index.js
react
_reactDom2.default.render(_react2.default.createElement( 'div', null, '\u8FD9\u662F\u4E00\u4E2A\u6587\u672C' ), document.getElementById('app'));
查看浏览器git
// 渲染文本 ReactDom.render( <div>{111}</div>, document.getElementById('app') )
使用babel
转义:babel --plugins transform-react-jsx index.js
github
_reactDom2.default.render(_react2.default.createElement( 'div', null, 111 ), document.getElementById('app'));
查看浏览器数组
ReactDom.render( <div>{"hello world"}</div>, document.getElementById('app') )
使用babel
转义:babel --plugins transform-react-jsx index.js
浏览器
_reactDom2.default.render(_react2.default.createElement( 'div', null, "hello world" ), document.getElementById('app'));
查看浏览器babel
ReactDom.render( <div>{1 + 1}</div>, document.getElementById('app') )
使用babel
转义:babel --plugins transform-react-jsx index.js
app
_reactDom2.default.render(_react2.default.createElement( 'div', null, 1 + 1 ), document.getElementById('app'));
查看浏览器函数
const name = 'world' ReactDom.render( <div>{name}</div>, document.getElementById('app') )
使用babel
转义:babel --plugins transform-react-jsx index.js
spa
var name = 'world'; _reactDom2.default.render(_react2.default.createElement( 'div', null, name ), document.getElementById('app'));
const getName = () => 'world' ReactDom.render( <div>{getName()}</div>, document.getElementById('app') )
使用babel
转义:babel --plugins transform-react-jsx index.js
var getName = function getName() { return 'world'; }; _reactDom2.default.render(_react2.default.createElement( 'div', null, getName() ), document.getElementById('app'));
查看浏览器
ReactDom.render( <div>{ 1 == 1 ? 1 : 0 }</div>, document.getElementById('app') )
使用babel
转义:babel --plugins transform-react-jsx index.js
_reactDom2.default.render(_react2.default.createElement( 'div', null, 1 == 1 ? 1 : 0 ), document.getElementById('app'));
查看浏览器
// 方式1 ReactDom.render( <div>{ [1, 2, 3].map((item, index) => { return <p key={index}>{item}</p> }) }</div>, document.getElementById('app') ) // 方式2 const arr = [1, 2, 3].map((item, index) => { return <p key={index}>{item}</p> }) ReactDom.render( <div>{arr}</div>, document.getElementById('app') )
使用babel
转义:babel --plugins transform-react-jsx index.js
// 方式1 _reactDom2.default.render(_react2.default.createElement( 'div', null, [1, 2, 3].map(function (item, index) { return _react2.default.createElement( 'p', { key: index }, item ); }) ), document.getElementById('app')); // 方式2 var arr = [1, 2, 3].map(function (item, index) { return _react2.default.createElement( 'p', { key: index }, item ); }); _reactDom2.default.render(_react2.default.createElement( 'div', null, arr ), document.getElementById('app'));
查看浏览器
经过转义前转义后对比,咱们能够看出来,其实没有html
的东西存在在其中,彻底都是js
,因此咱们能够用代码的形式来构建整个UI
,将模板抛弃脑后,咱们能够在使用js
定制组件,随意使用js
的形式组合组件,造成更大的组件,一切都是js
,自由的 js。
固然,自由也带来混乱,须要将这种自由化为思想的自由,而不是工程的自由、代码的自由,不然将会带来噩梦。