1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        解讀官方博客:React18真的來(lái)了

        共 1662字,需瀏覽 4分鐘

         ·

        2021-06-13 10:12

        9日凌晨1點(diǎn),React官方博客放出v18最新進(jìn)展。

        官方帶來(lái)的三條消息

        React18工作計(jì)劃[1]這篇博文中,官方帶來(lái)了三條消息。

        1. v18的工作已經(jīng)在進(jìn)行中,并且會(huì)是下一個(gè)主要版本

        2. 創(chuàng)建了v18工作組,讓社區(qū)的專(zhuān)家、開(kāi)發(fā)者、庫(kù)作者先試用v18,為社區(qū)的眾多庫(kù)前置兼容CM(Concurrent Mode)、教育社區(qū)做準(zhǔn)備

        工作組地址[2]

        1. 發(fā)布了v18 Alpha版本,以便庫(kù)作者可以嘗試并提供反饋

        使用v18 Alpha[3]

        接下來(lái)我們解讀下消息背后的信息。

        墊腳石墊的是什么

        我們知道,v17「墊腳石」版本,用以穩(wěn)定CM。

        CM之所以難以穩(wěn)定,一句話(huà)概括原因:

        CMReact帶來(lái)應(yīng)用層面的Breaking Change,而且是史無(wú)前例的

        這里帶來(lái)的工作量包括兩部分:

        • 為支持v18的新特性付出的開(kāi)發(fā)成本

        • 幫社區(qū)漸進(jìn)升級(jí)到v18付出的開(kāi)發(fā)、溝通成本

        新特性付出的開(kāi)發(fā)成本

        v18的主要特性「流式SSR」前置依賴(lài)「不同優(yōu)先級(jí)的Suspense」。

        「不同優(yōu)先級(jí)的Suspense」前置依賴(lài)「更靈活的CM」。

        這里的靈活指「優(yōu)先級(jí)」之間不僅可以單獨(dú)比較,還能以「批」的概念互相比較。

        所以「Andrew」v16.13.1時(shí)需要先完成lanes優(yōu)先級(jí)調(diào)度算法的開(kāi)發(fā)。

        同時(shí),底層支持「更靈活的CM」后,也為上層帶來(lái)了諸如:

        • startTransition、useDeferredValue這樣的API,可以讓開(kāi)發(fā)者顯式的指定UI渲染的優(yōu)先級(jí)。

        比如:可以利用useDeferredValue,根據(jù)用戶(hù)設(shè)備性能(qps),實(shí)現(xiàn)自動(dòng)的debounce功能。

        • API,比如OffScreen(可以理解為React版的keep-alive

        • 自動(dòng)batchUpdate,不僅局限在事件回調(diào)函數(shù)中

        為社區(qū)漸進(jìn)升級(jí)付出的成本

        官方還在最新進(jìn)展中透露,升級(jí)到v18將不會(huì)、或很少的改變現(xiàn)有代碼。

        原因是:CM是可選的(也就是說(shuō)「時(shí)間切片」是默認(rèn)關(guān)閉的)。

        剛才聊到,CM前置依賴(lài)「優(yōu)先級(jí)調(diào)度」,而「優(yōu)先級(jí)調(diào)度」是在「時(shí)間切片」這一架構(gòu)上實(shí)現(xiàn)的。

        所以,當(dāng)「時(shí)間切片」被默認(rèn)關(guān)閉后,現(xiàn)有代碼幾乎不需要改動(dòng)就可以平滑升級(jí)到v18。

        可以看到,「時(shí)間切片」特性被標(biāo)記為Umbrella,代表這一特性會(huì)影響很多API、架構(gòu)、庫(kù)

        v17發(fā)布時(shí),React內(nèi)部重構(gòu)了「事件機(jī)制」

        React事件不會(huì)冒泡到統(tǒng)一的根節(jié)點(diǎn),而是每個(gè)應(yīng)用(即調(diào)用ReactDOM.render的節(jié)點(diǎn))的根節(jié)點(diǎn)。

        這就能讓整個(gè)應(yīng)用中的一部分保持現(xiàn)有的legacy模式,新的部分啟用CM,因?yàn)檫@兩個(gè)子應(yīng)用是相互獨(dú)立的。

        由于CM帶來(lái)的Breaking Change使一大票庫(kù)都不兼容(比如mobx),所以React還專(zhuān)門(mén)開(kāi)發(fā)了新API —— create-subscription用于訂閱外部依賴(lài)。

        這也是為什么v18 Alpha會(huì)優(yōu)先讓庫(kù)作者使用 —— 庫(kù)現(xiàn)有的實(shí)現(xiàn)在開(kāi)啟CM全功能時(shí),有可能不兼容。

        時(shí)間點(diǎn)

        當(dāng)前v18 Alpha已經(jīng)可用。公開(kāi)的beta版會(huì)在幾個(gè)月后發(fā)布。

        beta版發(fā)出后幾周后,會(huì)發(fā)布RC版本。

        最后,在RC版本后至少幾周后,穩(wěn)定版本會(huì)發(fā)布。

        所以整體的預(yù)計(jì)是:v18穩(wěn)定版年底會(huì)到來(lái)。

        屆時(shí),React團(tuán)隊(duì)的工作重心將放在Server Components上。

        參考資料

        [1]

        React18工作計(jì)劃: https://reactjs.org/blog/2021/06/08/the-plan-for-react-18.html

        [2]

        工作組地址: https://github.com/reactwg/react-18/discussions

        [3]

        使用v18 Alpha: https://github.com/reactwg/react-18/discussions/9

        瀏覽 49
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日韩无码一级 | 女人被男人猛烈进入是怎么了 | 古代艳h肉bl | 亚洲一在线 | 欧美人与牲禽动a交精品 | 一级片手机在线观看 | 免费在线观看成人小视频 | 午夜爱爱网站 | 大力耸动乖女h清 | 国产一二三四 |