3

React.JS 18新特性

 3 years ago
source link: https://www.jdon.com/57254
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
React.JS 18新特性

如果您是React开发人员,那么您可能已经听说过React-React 18 Alpha的最新版本。该团队仍在进行更新,还有很多事情要做,因此在本文中,让我们看看版本中发生了什么并将其分解为简单的内容。

1. 自动批处理

React 18 通过默认执行更多批处理来增加开箱即用的性能改进,无需在应用程序或库代码中手动批处理更新。

批处理是 React 将多个状态更新分组到单个重新渲染中以获得更好的性能。简单来说,批处理(分组)意味着将多个状态更新组合到一个渲染中。每当您使用 setState 更改任何函数内的变量时,React 会收集所有 setState,然后一起执行它们,而不是在每个 setState 上进行渲染。这称为批处理。

function App() {
  const [count, setCount] = useState(0);
  const [flag, setFlag] = useState(false);

  function handleClick() {
    setCount(c => c + 1); // Does not re-render yet
    setFlag(f => !f); // Does not re-render yet
    // React will only re-render once at the end (that's batching!)
  }

  return (
    <div>
      <button onClick={handleClick}>Next</button>
      <h1 style={{ color: flag ? "blue" : "black" }}>{count}</h1>
    </div>
  );
}

这对性能非常有用,因为它避免了不必要的重新渲染。

2.服务端渲染

服务端渲染是一种在服务器端将JS数据渲染成HTML的方式,以节省前端的计算量。在大多数情况下,这会导致更快的初始页面加载。

React 分 4 个连续步骤执行服务端渲染:

  1. 在服务器上,为每个组件获取数据。
  2. 在服务器上,整个应用程序被渲染为 HTML 并发送到客户端。
  3. 在客户端,获取整个应用程序的 JavaScript 代码。
  4. 在客户端,JavaScript 将 React 连接到服务器生成的 HTML,即Hydration。在普通版本中(直到 React 17),SSR 必须先加载整个页面,然后才能开始对页面进行保湿。

这在 React18 中发生了变化,现在我们可以使用将 React 组件分解成更小的块 .

3.流式 HTML

通过将组件包装其中:

<Suspense fallback={<Spinner />}>
  {children}
</Suspense>

我们告诉 React 它不需要等待为页面的其余部分流式传输 HTML,这时React 将发送占位符(一个spinner)。

当数据在服务器上准备好时,React 会将额外的 HTML 发送到同一个流中,以及一个最小的内联脚本标签,以将该 HTML 放在“正确的位置”。

4. 选择性的Hydration

在 React 18 之前,如果应用程序的完整 JavaScript 代码尚未加载,则 hydration 无法启动。对于较大的应用程序,此过程可能需要一段时间。

让您可以在加载子组件之前为应用程序添加hydration 。

通过将组件包装在其中,您可以告诉 React,它们不应该阻止页面的其余部分进行流式传输——甚至是hydration 。这意味着您不再需要等待所有代码加载完毕才能开始hydrating。React 可以在加载部件时对其进行hydrate 。

总结总结一下,React 18 带来的特性是:

  1. 使用 Transition API 进行并发控制,
  2. 自动批处理函数调用和事件以提高应用程序内性能,以及
  3. 使用 Suspense 为 SSR 加载更快的页面。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK