JSX 简介
JSX 是 JavaScript 的扩展语法,它允许你在 JavaScript 代码中编写类似 HTML 的标记。JSX 是 React 的核心特性之一。
为什么使用 JSX?
React 认为渲染逻辑本质上与其他 UI 逻辑内在耦合,比如事件处理和状态变化等。React 没有将标记和逻辑分离到不同的文件,而是将它们一起包含在称为组件的松散耦合单元中。
JSX 的基本语法
1. 类似 HTML 的语法
JSX 看起来很像 HTML,但它实际上是 JavaScript 的语法扩展。
const element = <h1>Hello, world!</h1>;2. 嵌入表达式
你可以在 JSX 中使用大括号 {} 来嵌入任何有效的 JavaScript 表达式。
const name = 'Josh Perez';
const element = <h1>Hello, {name}</h1>;3. JSX 也是表达式
JSX 本身也是一个表达式,编译后会得到 JavaScript 对象。
function getGreeting(user) {
if (user) {
return <h1>Hello, {formatName(user)}!</h1>;
}
return <h1>Hello, Stranger.</h1>;
}JSX 的特性
1. 指定属性
使用引号来指定字符串字面量作为属性值,或者使用大括号来嵌入 JavaScript 表达式。
const element = <div tabIndex="0"></div>;
const element = <img src={user.avatarUrl}></img>;2. JSX 表示对象
Babel 会将 JSX 编译为 React.createElement() 调用。
const element = (
<h1 className="greeting">
Hello, world!
</h1>
);
// 等同于
const element = React.createElement(
'h1',
{className: 'greeting'},
'Hello, world!'
);注意事项
- React DOM 使用 camelCase (驼峰式) 命名来定义属性的名称,而不是使用 HTML 属性名称的命名约定
- JSX 中的 class 变成了 className
- 自闭合标签必须包含斜杠:
<div />
下一步
学习 JSX 基础后,继续了解组件嵌套。
这篇文章有帮助吗?
Previous / Next
Related Links