React Conf 2021 (6) - Relay 以及一些其他有意思的topic

499 阅读3分钟

本系列是在观看React Conf的随笔记录, 一共六篇。这几天整理了下来,内容全来自每个React Conf的Speaker(感谢🙏). 这其中也包含一些自己的想法。若有错误请评论区指出。 当然还是建议亲自去看一下新鲜出炉的React Conf 2021 - Replay

Relay

1.png 在开始之前, 先来思考一个问题, 在fetch数据这个场景里为什么要使用框架?

2.png

我们可以使用fetching来获取一切请求,但是这样会导致一些问题:

  1. app中每个组件只关心自己的数据,这样会导致有些字段重复获取
  2. 每个组件都要处理自己的loading的中间状态(因为每个组件数据返回的时机不一)
  3. 整体的效率很慢

3.png

那么我们是否可以通过一个很大的query来获取所有的data, 然后一次性的给到前端?

答案是否定的。这样会导致强耦合, 隐式依赖。字段特别多的情况下导致后期根本不敢删除字段,只敢新增。

4.png

而relay相当于可以指定每个组件需要什么数据,让relay来负责组合查询。

5.png

这样完成了数据的解耦。

那么来看下一个问题,loading状态的冗余分布? 当然是Suspense。我们可以使用Suspense来切分Loading的状态,只需专注于取数的逻辑。

6.png

Relay有个提升是可以针对字段设定优先级。例如, 一个页面,头像和用户名信息就是高优先级字段,因为头像名字这些对于后端来说不是很重计算,可以优先返回。后面比较耗时的信息, relay可以单独为其创建一个请求。

7.png

那么来看一下数据一致性。当数据实体改变的时,relay负责把改变后的数据与组件内的数据进行比较(diff)。如果有改动才会触发重渲染。这样relay能有更好的性能。例如一个新闻信息流滚动条,在不断的上滑下滑中,减少非必要的重渲染会得到更好的用户体验。

8.png


接下来是一些我觉得有意思或者有价值的信息,记录下来:

Realtime React Playground

Quick & Easy

Build optimized websites quickly, focus on your content | Docusaurus

Nextra: Next.js static site generator

CUSTOM

@next/mdx

GitHub - hashicorp/next-mdx-remote: Load mdx content from anywhere through getStaticProps in next.js

mdx-bundler

React Native for Window + MacOS

React Native for Windows + macOS · Build native Windows & macOS apps with Javascript and React

React Native现在可以写Window和Mac OS了。

On Device ML For React Native

Easy to use set of tools to create on-device ML demos on Android and iOS. Unlock the vast potential of AI innovations.

这个可以用React Native很快的创建一个ML native应用。我觉得很有意思。

Toolkit for building accessible web apps with React

ariakit

平常写业务的时候很少去注意可访问性想过的东西。但是真是看过视障人士使用当前的web产品才知道自己做的东西真的不算对所有用户友好。

React components for creating SmartHR applications.

GitHub - kufu/smarthr-ui: React components for creating SmartHR applications.

一个日本小哥做的UI组件库,我认为是可访问性的标杆,之后如果自己的组件也会尝试去增加可访问下。

Framework for dynamic commerce

Hydrogen: Shopify's opinionated framework for building headless ecommerce

GitHub - Shopify/hydrogen: React-based framework for building dynamic, Shopify-powered custom storefronts.

是shopify engineer团队构建的一套Server Side Render的框架。说实话,shopify的产品在跨境电商这一块真的有很多人在用, 速度快, SEO很棒,站点编辑器方便易用。当然最重要的是应用了React 18新的Server Side Render架构。是一个很好的研究对象。


当然, React Conf 2021肯定还有其他很有意思的地方,例如huangxuan提出的React forget概念就超级有意思,但是我觉得我需要更多的时间去消化。还是建议各位有时间可以自己去看一下回放。

React Conf 2021 - Replay

最后, 感谢你看到这里。 Happy Coding~