React维护者真任性,组件又能返回undefined了

本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!前端

这篇文章废话比较多,时间紧张的看最后的总结就好了。react

事情是这样的,早上由于来的晚,因此我如今还么到下班时间。下周又要讲React18,因此我就在这儿待着看github上React18的讨论区,为下周找点新鲜素材。(最近在写RN,有一周没关注React18了)git

image-20210726190600530

而后,我就看到了排行第二的这条Update to allow components to render undefined,我就很诧异了,是否是我看错了,我记得之前React有一版专门说修复了组件返回undefined不报错的bug,怎么如今又让返回undefined了,是否是我看错了。因而我又点进来,程序员

image-20210726191337120

看到红框这行字,我仍是以为不是很能相信,因而我打开个人react-ice项目,写了个组件:github

image-20210726191538585

一测试,报错。web

可是这个项目是我前段时间yarn add react@alpha react-dom@alpha装的React18Alpha,而这个文章是两天前写的,也就是个人包还不够新。因而我又从新执行了下yarn add react@alpha react-dom@alpha,从新跑下代码,果真,太平盛世,没有任何报错。后端

行吧。收到。markdown

(若是不是为了写这篇文章或者是下周要讲React18,我都不想往下看背景介绍了,一句话解释“I changed my mind”,这么一大段背景,可是为了工做,我继续往下看了。)dom

背景也比较简单,React之前之因此返回undefined会报错,是为了帮助用户快速排错,由于用户可能会忘记返回组件,好比说下面这个例子:ide

function Animal({type}) {
  if (type === 'cat') {
    // 没返回,报错!
    // 这一般是程序员的失误
    <Cat />;
  }
​
  return;
}
复制代码

这是当时2017年把组件返回undefined报错处理的缘由,可是如今来看呢,今时不一样往日了,如今的类型检测工具都很是流行而且可靠了,好比ts。因此如今React能够再也不帮助用户排查忘记给组件添加返回值的状况了。

而且还有一点,这个改动和React18以后的特性也相关。好比Suspense,若是我不想要fallback因此才赋值undefined,可是React报错,这理论上有点矛盾。

还有这点改动对服务端也很重要,由于要接受来自服务端的children,返回undefined报错会增长复杂性,仍是简单点吧。 好了,写个总结,我到下班点了。顺便参加下掘金的活动。

总结

React18的组件能够返回undefined表明空了,不会再报错了

最后,打个广告再走,欢迎关注个人b站,前端bubucuo,React18最新讲解视频持续更新中

相关文章
相关标签/搜索