React 用常量(const)来储存元素(Element),元素一旦被创建就不可更改。React DOM 可以把一个 React 元素渲染成浏览器 DOM 元素。React 元素使用 JSX 来定义。
它是 JavaScript 的一个语法拓展,和 HTML 类似,但有很多不同。HTML 是一门标记语言,而 JSX 在语法上更接近 JavaScript。
JSX 可以在标签中嵌入各种表达式。
// 使用 { } 在 JSX 中嵌入 JavaScript 表达式
<h1>{this.props.heading}</h1>
<img src={getSource(img)}></img>
这有点类似 PHP 的 <?php ?>
<h1><?php echo $this.props.heading; ?></h1>
<img src="<?php echo getSource(img); ?>"></img>
相信你也注意到了,在 JSX 标签中定义字符串属性的值时,不需要在表达式两边加上引号,而 PHP 就需要。这是因为,PHP 是在 HTML 中嵌入 PHP 代码块,而不是单独的表达式;JSX 的表达式是元素的一部分,JSX 本身也是一个表达式。
JSX 的属性名与 HTML 也有区别,它采用的是更接近 JavaScript 的属性名。
<!-- HTML -->
<div class="test"></div>
<div tabindex=0></div>
// JSX
<div className="test"></div>
<div tabIndex=0></div>
最主要的区别是:
使用 const 和 JSX 表达式创建一个 React 元素。
const element = <div>An Element</div>;
一个元素可以有很多的子元素,就和 XML 语法一样。在创建 React 元素时需要换行,则必须用括号将 JSX 表达式包裹起来。
const element = (
<div className="container">
<h1>Example</h1>
<p>Content.</p>
</div>
);