一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - 期待已久的React 18 Beta 來了

期待已久的React 18 Beta 來了

2021-11-16 22:51魔術師卡頌卡頌 JavaScript

React團隊已經在多個應用的生產環境測試了Beta版本幾個月,并且相信他足夠穩定。所以,開發者已經可以升級至v18 Beta版本。

期待已久的React 18 Beta 來了

大家好,我卡頌。

經過「React18工作組」幾個月工作,11月16日v18終于從Alpha版本更新到Beta版本。

本文會解釋:

  • 這次更新帶來的變化
  • 對開發者的影響
  • 如何安裝v18 Beta
  • v18穩定版何時會來

期待已久的React 18 Beta 來了

帶來的變化

經過與社區不斷溝通,Beta版將有如下三個API變動:

useSyncExternalStore將替代useMutableSource 用于訂閱外部源,見:#86討論[1]

用法類似如下:

  1. import {useSyncExternalStore} from 'react'
  2.  
  3. // 基礎用法,getSnapshot返回一個緩存的值 
  4. const state = useSyncExternalStore(store.subscribe, store.getSnapshot); 
  5.  
  6. // 根據數據字段,使用內聯的getSnapshot返回緩存的數據 
  7. const selectedField = useSyncExternalStore(store.subscribe, () => store.getSnapshot().selectedField); 

useId用于在客戶端與服務端之間產生唯一ID,避免SSR hydrate時元素不匹配,見#111討論[2]

用法類似如下:

  1. function Checkbox() { 
  2.   const id = useId(); 
  3.   return ( 
  4.     <> 
  5.       <label htmlFor={id}>Do you like React?</label> 
  6.       <input type="checkbox" name="react" id={id} /> 
  7.     </> 
  8.   ); 
  9. ); 

useInsertionEffect用于插入全局DOM節點,見#110討論[3]

useInsertionEffect工作原理類似useLayoutEffect,區別在于回調執行時還不能訪問ref中的DOM節點。

你可以在這個Hook內操作全局DOM節點(比如<style>或SVG<defs)。

操作CSS的庫(比如CSS-IN-JS方案)可以用這個Hook插入全局<style>。

用法類似如下:

  1. function useCSS(rule) { 
  2.   useInsertionEffect(() => { 
  3.     if (!isInserted.has(rule)) { 
  4.       isInserted.add(rule); 
  5.       document.head.appendChild(getStyleForRule(rule)); 
  6.     } 
  7.   }); 
  8.   return rule
  9. function Component() { 
  10.   let className = useCSS(rule); 
  11.   return <div className={className} />; 
  12. }

至此,v18的特性已經完備,正式版發布之前不會再新增API。

對開發者的影響

React團隊已經在多個應用的生產環境測試了Beta版本幾個月,并且相信他足夠穩定。所以,開發者已經可以升級至v18 Beta版本。

Beta作為「預發布版本」,與最終的正式版的區別是:可能還有少許bug,但整體穩定。

社區中兼容v18的知名項目包括:

  • Next.js
  • Gatsby
  • React Redux
  • React Testing Library

安裝Beta

安裝命令如下:

  1. # npm 
  2. npm install react@beta react-dom@beta 
  3. # yarn 
  4. yarn add react@beta react-dom@beta 

穩定版何時回來

根據Andrew的回復,正式版最早發布時間可能會在22年1月底。

期待已久的React 18 Beta 來了

總結

不管是新文檔[4]還是Beta版,可以發現下半年React團隊節奏明顯加快了。

從v15升級到v16啟用Fiber架構那天開始,React團隊就在為并發更新的穩定努力了。

這一天,終于不遠了......

參考資料

[1]#86討論:

https://github.com/reactwg/react-18/discussions/86

[2]#111討論:

https://github.com/reactwg/react-18/discussions/111

[3]#110討論:

https://github.com/reactwg/react-18/discussions/110

[4]新文檔:

http://beta.reactjs.org/

原文鏈接:https://mp.weixin.qq.com/s/GZK5sncycR1_g8ecUlzZYA

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国内精品久久久久久不卡影院 | 午夜秀场在线观看 | 国产午夜亚洲精品理论片不卡 | 国产欧美日韩综合 | 亚洲麻豆精品 | 俄罗斯激情性孕妇孕交大全 | 成年人视频在线免费观看 | 天堂va在线 | 美国雪白人妖sarina | 亚洲欧美午夜 | 日本高清不卡一区久久精品 | 丝瓜视频黄色在线观看 | 美女一线天 | 国产福利在线免费观看 | 免费看又黄又爽又猛的视频软件- | 国产精品成人va在线观看 | 亚洲国产在线视频精品 | 午夜香蕉 | 天天夜夜草草久久伊人天堂 | 久久r视频 | 国产东北3p真实在线456视频 | 视频在线观看入口一二三2021 | 男人天堂2023 | 99精品国产自产在线观看 | 青草视频免费观看 | 亚洲日本aⅴ片在线观看香蕉 | 韩国三级视频网站 | 国内精品久久久久影院中国 | 暖暖的视频完整视频韩国免费 | 天天快乐在线观看 | 日韩欧美国产一区二区三区 | 国产综合亚洲专区在线 | 火影忍者羞羞 | 午夜电影三级还珠格格 | yy3341殇情影院理论片 | 国产日产精品久久久久快鸭 | 欧美精品v日韩精品v国产精品 | 大象视频污 | 日本丰满大乳乳奶 | 男人天堂官方网站 | 色噜噜狠狠色综合 |