React Conf 2021

795 阅读3分钟

本文是React Conf 2021的看后的感受。

React 新教学文档

地址 目前教程部分进度70%,api部分30%,几个特点是:

  1. Hooks First。完全以Hooks的视角进行教学。
  2. 互动性。可以直接在网站上对给出的例子进行代码成面的修改,避免了之前文档枯燥的只读模式。这个功能是和codesanbox深度合作,为此还产生了一个新的sandpack
  3. 结构大调整。总分结构,大纲在前,细节随后。
  4. 每章结尾有习题。

以后关于文档这块,可见的是互动性会更强,sandpack已开源,将会大量采用。

React 工具

React Developer Tools进一步升级,除了对Components和Profiler优化,还计划推出Timline功能。

Timline功能可以查看应用中的React组件和非React代码的各种时间,同时支持Suspense等功能,能更加精确的定位性能问题,非常期待。

React Forget

大杀器

原本我们需要自己在代码里面写useCallback,useMemo等来优化的性能,现在官方推出这个功能,可以自动给你优化,带来的好处的是:

  1. 代码更少
  2. 性能更优。

React 18新特性

  • 自动批处理
  • 服务端suspense
  • 新的api

自动批处理

在React18之前,组件里面的多个setState会自动批处理,但是比如像在Fetch的回调里面,如果你调用多个setState还会渲染多次,18之后给优化了。

服务端suspense

性能优化的利器

这个的目的主要还是提升用户体验

React18之前对整个应用hydrate,现在可以做到对单个组件hydrate。

带来的一个好处,就是可以设置组件的渲染优先级。

对比code splitting的优势在于如果同时设置了多个suspense组件,但是用户点击了之中某个组件,会优先hydrate那个被点击的组件。

新api(concurrent features)

  • startTransition
  • useTransition
  • useDeferredValue()

这三个对普通开发者。

  • useId()
  • useSYncExternalStore()

对库开发者有用。useId()这个主要是产生一个uuid。

升级方式

从之前的render改为createRoot。

其他

  • strict mode更严格
  • flushSync() API 可以避开automatic batching

Relay再介绍

在日常中我们取数一般有两种:

  1. 每个组件自己请求。好处是耦合小,但是请求数量会很多。
  2. 一个大数据量的请求。好处是请求只发一次,但是无效的数据会很多。

Relay就是做了平衡,它会收集每个组件的配置,形成一个大的请求,返回精确的数据。

这样就做到既能组件隔离,又避免发多个请求,返回的数据又不多余。

服务端组件

介绍了shopify的一个库hydrogen.

这个可以和前面的服务端suspense结合起来。

RN部分。

2个主题,主要介绍了

  1. AI学习。演示了pytorch如何在RN里面使用。给的例子是调用了一个摄像头,识别桌上的物品比如鼠标,玩偶等。
  2. Desktop。RN除了移动端,在桌面开发也有涉足,比如xbox的界面,这块主要微软在做,具体可看react-native-windows