官方發布了最新React 17候選版,距離上個主要版本React 16已經有兩年半,但是經過這麼長的時間,官方卻推延所有新功能,為的是將焦點擺在改善React本身版本升級上,從React 17開始支援漸進式升級,也就是說,開發者未來將可以對應用程式進行部分升級,而不用一次升級整個應用程式使用的React 版本。

React 17並非一般的升級版本,因為沒有添加任何給開發人員的新功能,官方提到,React 17是應用程式升級到未來React版本的墊腳石,使React能夠安全地將React樹,嵌入到另一個版本的React樹中,而這將是他們推廣React的關鍵戰略。過去React升級必須採取全有或是全無策略,開發人員必須要選擇,將整個應用程式升級使用React新版本,或是不升級繼續使用舊版本,沒有部分升級的選項。

不過,全有全無升級策略限制了React本身的發展,官方提到,當部分API變更,像是過時淘汰的上下文API,即便現在大部分應用程式都不再使用這個API,但是React還是必須提供支援,官方面臨做選擇,不是無限期地在React中繼續支援,要不就不在新的React支援,讓這些應用程式只能使用舊版React,但官方認為這兩個選項都不好。

因此官方決定在React中支援逐步更新,當應用程式要從React 15升級到16,或是即將要把React 16的應用程式升級到17版,開發者會一次升級整個應用程式,官方提到,這樣的方式適用於大部分的應用程式,但是對於那些有一點年紀,且沒有被積極維護的應用程式,升級面臨的挑戰可能很大,過去儘管在頁面上可以同時使用兩個版本的React,但是仍然容易故障,可能會有事件處理上的問題。

在React 17中,官方已經解決了許多相關的問題,而這代表未來當開發者要將React 17應用程式,升級到React 18或是更高版本時,將會有更多選擇,除了跟像過去一次升級整個應用程式之外,未來也能選擇一次僅升級一部分,保留React 17上諸如延遲載入對話或是子路由等功能。

React開始提供逐步升級功能,這不代表鼓勵開發者就要逐步更新應用程式,官方提到,一次完整升級應用程式仍然是最好的解決方案,載入兩個版本的React,即便其中一個是按需載入,都並非理想的方法,但是對於不受積極維護的大型應用程式,逐步升級是可以考慮的升級方法,React 17能讓這些應用程式不落伍。

為了要在React中支援漸進式更新,官方對React事件系統進行了一些更改(下圖),由於這些更改可能使部分應用程式故障,因此官方將React 17訂為主要版本,不過,事實上這個版本僅變更了React超過10萬個元件中的不到20個,因此官方認為大部分的應用程式都能夠順利升級,而為了要降低升級的難度,因此官方也把所有本來要加入的新功能都延後,確保應用程式能夠更簡單地升級到React 17中,官方提到,如果連要升級到React 17都很困難了,漸進式更新也終將失敗。

熱門新聞

Advertisement