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最新講解視頻持續更新中

相關文章
相關標籤/搜索