成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

期待已久的React 18 Beta 來了

開發(fā) 前端
React團(tuán)隊(duì)已經(jīng)在多個(gè)應(yīng)用的生產(chǎn)環(huán)境測試了Beta版本幾個(gè)月,并且相信他足夠穩(wěn)定。所以,開發(fā)者已經(jīng)可以升級至v18 Beta版本。

[[435280]]

大家好,我卡頌。

經(jīng)過「React18工作組」幾個(gè)月工作,11月16日v18終于從Alpha版本更新到Beta版本。

本文會解釋:

  • 這次更新帶來的變化
  • 對開發(fā)者的影響
  • 如何安裝v18 Beta
  • v18穩(wěn)定版何時(shí)會來

帶來的變化

經(jīng)過與社區(qū)不斷溝通,Beta版將有如下三個(gè)API變動:

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

用法類似如下:

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

useId用于在客戶端與服務(wù)端之間產(chǎn)生唯一ID,避免SSR hydrate時(shí)元素不匹配,見#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節(jié)點(diǎn),見#110討論[3]

useInsertionEffect工作原理類似useLayoutEffect,區(qū)別在于回調(diào)執(zhí)行時(shí)還不能訪問ref中的DOM節(jié)點(diǎn)。

你可以在這個(gè)Hook內(nèi)操作全局DOM節(jié)點(diǎn)(比如<style>或SVG<defs)。

操作CSS的庫(比如CSS-IN-JS方案)可以用這個(gè)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的特性已經(jīng)完備,正式版發(fā)布之前不會再新增API。

對開發(fā)者的影響

React團(tuán)隊(duì)已經(jīng)在多個(gè)應(yīng)用的生產(chǎn)環(huán)境測試了Beta版本幾個(gè)月,并且相信他足夠穩(wěn)定。所以,開發(fā)者已經(jīng)可以升級至v18 Beta版本。

Beta作為「預(yù)發(fā)布版本」,與最終的正式版的區(qū)別是:可能還有少許bug,但整體穩(wěn)定。

社區(qū)中兼容v18的知名項(xiàng)目包括:

  • 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 

穩(wěn)定版何時(shí)回來

根據(jù)Andrew的回復(fù),正式版最早發(fā)布時(shí)間可能會在22年1月底。

總結(jié)

不管是新文檔[4]還是Beta版,可以發(fā)現(xiàn)下半年React團(tuán)隊(duì)節(jié)奏明顯加快了。

從v15升級到v16啟用Fiber架構(gòu)那天開始,React團(tuán)隊(duì)就在為并發(fā)更新的穩(wěn)定努力了。

這一天,終于不遠(yuǎn)了......

參考資料

[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/

 

責(zé)任編輯:姜華 來源: 魔術(shù)師卡頌
相關(guān)推薦

2009-10-12 14:31:24

紅帽虛擬化

2021-07-19 22:31:39

微信微信客服移動應(yīng)用

2020-12-09 11:10:58

GitHub代碼開發(fā)者

2021-11-09 09:00:00

Docker開發(fā)工具

2021-03-18 16:16:48

高德地圖AR步行導(dǎo)航

2013-09-16 11:10:30

2022-09-26 09:39:30

LinuxsystemdWSL

2021-08-16 12:20:03

Debian 11Linux軟件包

2020-11-17 06:04:59

ZigC語言

2019-01-16 15:15:33

GitHub微軟私有倉庫

2010-06-30 09:26:43

Firefox 4.0

2021-10-10 22:16:24

iOS蘋果系統(tǒng)

2021-06-16 06:05:25

React18React

2009-08-04 13:20:12

2021-07-18 22:31:29

微信功能手機(jī)

2009-03-19 20:41:31

VirtualBox GuestsOpenGL 3D

2017-08-31 16:26:43

微軟

2020-09-25 15:15:29

LinuxKubernetes開源

2021-05-22 22:54:22

微信直播文檔
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩欧美一区二区三区免费看 | 噜噜噜噜狠狠狠7777视频 | 男女午夜免费视频 | 麻豆久久久9性大片 | 国产xxxx搡xxxxx搡麻豆 | 亚洲精品乱码久久久久久按摩观 | 午夜小视频在线播放 | 亚洲视频二| 久久精品免费观看 | 久久久精 | 日韩在线视频一区二区三区 | 亚洲天堂中文字幕 | 午夜精品久久久久久久星辰影院 | 日韩美女一区二区三区在线观看 | 天天躁日日躁狠狠躁2018小说 | 久久五月婷| 国产黄色电影 | 亚洲h色| www.4hu影院 | 韩国av电影网 | 最近中文字幕第一页 | 99爱国产| 精品一二区 | 天天噜天天干 | 亚洲成人av | 在线观看黄色电影 | 精品视频免费在线 | 欧美一级大片 | 欧美 日本 国产 | 亚洲午夜精品一区二区三区他趣 | 国产一区欧美一区 | 影音先锋中文字幕在线观看 | 欧美日高清视频 | 日韩成人av在线 | 亚洲精品国产电影 | 99re视频在线免费观看 | 日本精品久久久久 | 在线观看国产三级 | 99精品视频免费观看 | 日本精品久久久一区二区三区 | a爱视频 |