React.createElement的用法
<div className="shopping-list"><h1>Shopping List for {props.name}</h1><ul><li>Instagram</li><li>WhatsApp</li><li>Oculus</li></ul></div>;
等同于
React.createElement("div", {className: "shopping-list"},React.createElement("h1", null, "Shopping List for ", props.name),React.createElement("ul", null,React.createElement("li", null, "Instagram"),React.createElement("li", null, "WhatsApp"),React.createElement("li", null, "Oculus")));
React.createElement(type,[props],[...children])
JSX
可以通俗的理解为Javascript和XML的集合
const element = <h1>Hello, world!</h1>;
在 JSX 中嵌入表达式
在下面的例子中,我们声明了一个名为 name 的变量,然后在 JSX 中使用它,并将它包裹在大括号中:
const name = 'Josh Perez';const element = <h1>Hello, {name}</h1>;ReactDOM.render(element,document.getElementById('root'));
function formatName(user) {return user.firstName + ' ' + user.lastName;}const user = {firstName: 'Harper',lastName: 'Perez'};const element = (<h1>Hello, {formatName(user)}!</h1>);ReactDOM.render(element,document.getElementById('root'));
JSX 特定属性
你可以通过使用引号,来将属性值指定为字符串字面量:
const element = <div tabIndex="0"></div>;
也可以使用大括号,来在属性值中插入一个 JavaScript 表达式:
const element = <img src={user.avatarUrl}></img>;
JSX 防止注入攻击
你可以安全地在 JSX 当中插入用户输入内容:
const title = response.potentiallyMaliciousInput;// 直接使用是安全的:const element = <h1>{title}</h1>;
JSX 表示对象
Babel 会把 JSX 转译成一个名为 React.createElement() 函数调用。
以下两种示例代码完全等效:
const element = (<h1 className="greeting">Hello, world!</h1>);
const element = React.createElement('h1',{className: 'greeting'},'Hello, world!');
