React 编译器正式登场

React 编译器(React Compiler)能自动分析组件、插入最优的 memoization,让开发者不再手写 useMemo 和 useCallback。

问题背景

传统 React 中,为了避免不必要的重渲染,开发者要手动优化:

function ProductList({ products, filter }) {
  const filtered = useMemo(
    () => products.filter(p => p.category === filter),
    [products, filter]
  );
  const handleClick = useCallback((id) => {
    console.log(id);
  }, []);
  return <List items={filtered} onClick={handleClick} />;
}

手写依赖数组容易出错,也增加心智负担。

编译器写法

启用编译器后,同样的逻辑直接写,无需手动优化:

function ProductList({ products, filter }) {
  const filtered = products.filter(p => p.category === filter);
  const handleClick = (id) => console.log(id);
  return <List items={filtered} onClick={handleClick} />;
}

编译器会在构建时自动分析依赖,插入等价的缓存逻辑,性能不降反升。

启用方式

npm install babel-plugin-react-compiler
// babel.config.js
module.exports = {
  plugins: [["babel-plugin-react-compiler", {}]],
};

React 编译器代表了 React 的重要方向:让开发者专注业务逻辑,性能优化交给工具。