React 词条目录
前端Wiki/词条/Fiber 架构

Fiber 架构

定义React 16 重写的核心架构:把渲染工作拆成可中断、可恢复的纤细化任务单元

React 15 的 reconciliation(协调)是递归同步的:组件树一旦开始 diff 就停不下来,大更新会长时间卡住主线程(掉帧、输入无响应)。React 16 的 Fiber 把组件树改成链表式的 fiber 节点树,渲染工作被切成一小块一小块,每做完一块就检查时间片用完没有——用完了把控制权交还浏览器(画画、响应输入),空闲了从中断点恢复继续。

Fiber 上的更新分优先级:用户输入(高优先级)可以插队打断低优先级的渲染任务。双缓存机制(current 树与 workInProgress 树)让中断恢复有一致的基础。并发模式(Concurrent Mode)与 useTransition、Suspense 都是建立在这套机制之上的开发者 API。

HTML
// Fiber 对开发者是不可见的,但能从行为上感受它

import { useTransition, useState } from 'react';

function Search({ list }) {
  const [q, setQ] = useState('');
  const [isPending, startTransition] = useTransition();   // ★ 并发 API

  // 把「低优先级的大列表过滤」标记为 transition
  const onChange = e => {
    setQ(e.target.value);                    // 高优先级:输入框立刻刷新
    startTransition(() => {
      setResults(hugeFilter(list, e.target.value));  // 低优:可被打断
    });
  };

  // isPending 时可以显示 Loading,列表更新流畅不卡输入
  return <input value={q} onChange={onChange} />;
}

// 同步渲染的旧时代问题(React 15):
// 大列表 setState → 主线程被占满百毫秒 → 输入框打字延迟
⚠ 常见误区
🔗 相关词条React 是什么虚拟 DOM 与 DiffHooks
← 返回来源章节虚拟 DOM