【React】React 18的相关信息

关于React的18版本

<变更点>
– 通过批处理渲染来提升性能
– 引入过渡效果

渲染批处理化

在React 18中,通过对多个状态更新进行批处理,实现了批量执行重新渲染。这意味着即使在同一个函数中存在多个useState的set函数,渲染也只会执行一次。以前存在的多个set函数导致重复渲染的问题已经得到解决。

function ExampleComponent() {
  const [count, setCount] = useState(0);
  const [text, setText] = useState("");

  const handleClick = () => {
    setCount(count + 1);
    setText("Updated");
  };

  return (
    <div>
      <button onClick={handleClick}>Increment</button>
      <p>Count: {count}</p>
      <p>Text: {text}</p>
    </div>
  );
}

引入过渡

(note: Please note that the translation is in simplified Chinese)

React 18通过使用`useTransition`钩子和`startTransition`函数,可以控制异步渲染。这样就可以延迟渲染而不妨碍用户操作。在以前,用户操作导致的状态变化会立即渲染,但在React 18中,可以使用转换来暂停不必要的渲染。

import { useTransition, startTransition } from 'react';

function ExampleComponent() {
  const [count, setCount] = useState(0);

  const handleClick = () => {
    startTransition(() => {
      setCount(count + 1);
    });
  };

  return (
    <div>
      <button onClick={handleClick}>Increment</button>
      <p>Count: {count}</p>
    </div>
  );
}

在Suspense中进行服务器端渲染(SSR)

在React 18中,您可以使用组件来延迟在服务器端获取数据或渲染重型组件。这样一来,您可以异步地获取或渲染重型组件,同时在浏览器上显示其他部分的渲染。

function App() {
  return (
    <div>
      <Suspense fallback={<LoadingSpinner />}>
        <LazyComponent />
      </Suspense>
      <p>Other content</p>
    </div>
  );
}

海德

在React 18中,不需要等待页面内繁重的渲染,就可以进行操作。由于初始渲染时的与客户端的同步是异步执行的,所以用户可以快速进行交互操作。

本家React v18.0

非常易懂的文章:React 18的新功能和并行渲染的革命。