React 元素渲染

React 的核心思想是"用元素描述界面,界面随数据自动更新"。本节讲解什么是 React 元素,以及如何把元素渲染到页面中,这是理解后续组件、状态的基础。

什么是 React 元素

React 元素是描述"屏幕上该显示什么"的最小单位,它其实是一个普通的 JavaScript 对象。用 JSX 写出来的标签,编译后就是一个元素:

const element = <h1>你好,React</h1>;

element 并不直接对应页面上的 DOM 节点,它只是对内容的描述,真正的 DOM 由 React 负责创建和更新。

将元素渲染到页面

页面需要先有一个挂载点(一般是一个 div),再用 createRoot 创建根并调用 render:

import { createRoot } from 'react-dom/client';

const element = <h1>元素渲染示例</h1>;
const root = createRoot(document.getElementById('root'));
root.render(element);

渲染效果:页面中 id 为 root 的位置显示大标题"元素渲染示例"。

挂载点通常在 index.html 里预先定义好:

<div id="root"></div>

更新已渲染的元素

React 元素是不可变的:创建之后,你不能修改它的属性或内容。想更新界面,只能重新创建一个新元素,再交给 render。下面这个时钟每秒渲染一次当前时间:

import { createRoot } from 'react-dom/client';

function tick() {
  const element = (
    <div>
      <h2>现在时间:{new Date().toLocaleTimeString()}</h2>
    </div>
  );
  root.render(element);
}

const root = createRoot(document.getElementById('root'));
setInterval(tick, 1000);

渲染效果:页面每秒更新一次,持续显示最新时间。

React 只更新必要部分

每秒钟都在调用 root.render,浏览器性能会不会很糟?不会。React 会把新元素与上一次的元素做对比,只更新真正变化的部分。上面的时钟里,只有时间文字在变,h2 标签本身不会被重复创建,因此非常高效。

元素与组件的区别

初学者容易混淆这两个概念:

概念说明例子
元素描述界面内容的最小对象<h1>标题</h1>
组件可复用的函数/类,返回元素function App() {...}

组件内部最终也是靠元素来渲染,一个组件可以包含任意多个元素。

小结

React 元素是描述界面的对象,通过 createRoot(...).render(element) 渲染到页面;元素不可变,更新要靠重新 render,而 React 会智能地只更新变化的部分。掌握了元素渲染,就可以放心学习 JSX 与组件了。

笔记加载中…