React官方近期在部落格文章以及各地演講,釋出了諸多新功能消息,而現在於部落格公布了這些新功能正式加入React 16.x的時間表,程式碼拆分Suspense已經在React 16.6中加入,用來取代類別的Hooks將於2019年第一季被整合進React 16中,而Suspense和並行渲染則預計會在第二季時加入。

目前已經加入React 16.6中的更新功能是程式碼拆分(Code Splitting)的Suspense。Suspense是指元件正處在等待階段,而暫停渲染功能並顯示載入指示符號。在React 16.6中,Suspense只支援使用React.lazy()和<React.Suspense>延遲載入元件的使用案例。

從7月以來,臉書便一直在自家應用程式程式碼拆分使用Suspense,並在測試過程中盡可能改善該功能穩定性,而在React 16.6.3,程式碼拆分Suspense才進入穩定階段。官方提到,程式碼拆分只是Suspense的第一步,未來還會讓Suspense處理資料擷取,並與類似Apollo等函式庫整合,除了方便為程式開發模型的方便性,Suspense也可以在並行模式提供更好的開發者體驗。

在10月的時候,React宣布要加入新功能Hooks已取代類別,而官方預計將在2019年第一季正式加入。Hooks提供開發者類似函式元件狀態以及生命周期的功能,並允許開發者在元件之間重複使用有狀態邏輯。臉書在9月開始進行Hooks功能的研究,目前也確定這項更新在實作上不會出現重大的錯誤,想嚐鮮開發者可以先使用React 16.7 alpha版本。

官方提到,Hooks直接解決了React開發者體驗問題,對React未來發展非常重要,包括渲染工具與高順位元件的包裝器地獄,或是生命周期方法的邏輯重複問題。官方仍然強調,他們不會棄用類別,若Hooks成功,類別未來可能會移動到獨立套件中,來減少React預設套件的大小。

另外,官方預計,並行模式(Concurrent Mode)將在2019年第二季整合到React正式版中。並行模式對於受CPU限制的工作,透過不阻擋主要執行緒,允許非阻塞式渲染,以增加渲染元件樹的回應性,而且也能讓Suspense功能表現更好,當網路速度足夠快速,可以減少載入指示符號閃爍。

並行模式目前缺乏官方說明文件,功能也不齊全,部分API仍待開發,React官方建議,並行模式只能用在實驗上,而在<React.StrictMode>可能導致部分元件無法正常運作。由於並行模式依賴與主要執行緒調度器的合作,官方正與Chrome團隊合作,最終會將該功能移入瀏覽器中。

在2019年中,React還會為元件資料擷取(Data Fetching)支援Suspense功能,也就是說,當元件在進行資料擷取的時候,將能暫停畫面渲染。雖然在React 16.6中,低階Suspense機制已經趨於穩定,臉書也將其用於產品程式碼拆分上數個月,但資料擷取部分的SuspenseAPI仍非常不穩定,無法被用在正式環境上,而且與並行模式相同,也還沒有釋出關於資料擷取的官方文件。

官方提到,部分各自元件API設計並非有獨立意義,當所有功能都齊全後,才能看出之間的相關性。但採取逐步發布策略可以讓開發者先測試,也幫助官方優化這些API。

熱門新聞

Advertisement