理解 React 18 的“并发特性”,就这么简单
首发于公众号 前端从进阶到入院,欢迎关注。
React v18.0 引入了一项期待已久的新功能—— 并发模式 !
不幸的是,尽管有大量的资源解释 如何使用它 ,但解释 它如何工作 的资源却不太充足。
(相关资料图)
由于这是一个底层特性,理解 React 关于并发的概念并不是必须的,但也无妨!
这篇文章并不试图全面介绍 React 的并发 API 和最佳实践。最好结合链接在这里的 React 文档页面阅读。
什么是 React 并发模式?
React 并发的基本原理是重构渲染过程,使 在渲染下一个视图时,当前视图保持响应性 。
并发模式是 React 团队提升应用性能的一个提案。它的想法是将渲染过程分成可中断的工作单元。
在幕后,这将通过在 requestIdleCallback() 调用中包装组件渲染来实现,让应用在渲染过程中保持响应性。
所以,如果将类似如下的“阻塞模式”实现:
scss复制代码function renderBlocking(Component) { for (let Child of Component) { renderBlocking(Child); }}
那么将会这样实现“并发模式”:
scss复制代码function renderConcurrent(Component) { // 如果状态已经过时,打断渲染进程 if (isCancelled) return; for (let Child of Component) { // 等待浏览器不忙(没有要处理的输入) requestIdleCallback(() =>renderConcurrent(Child)); }}
阅读这篇实践指南:如何避免阻塞事件循环,以了解为什么这可以使应用程序保持响应!
如果你好奇 React 实际上如何做到这一点,请看看 React 的 scheduler 包的实现。在最初使用 requestIdleCallback 之后,React 切换到了 requestAnimationFrame ,之后又切换到了用户空间计时器。
没有模式,只有特性
由于向后兼容性的原因, 并发模式 并没有实现。
相反,React 团队转向了 并发特性 ,一组新的 API,用于选择性地启用并发渲染。到目前为止,React 已经引入了两个新的 hook 来实现并发渲染。
useTransition
useTransition hook 返回两个元素:
布尔标志 isPending ,如果并发渲染正在进行则为 true 函数 startTransition ,用于分发一个新的并发渲染为了使用它,请在 setState 调用中使用 startTransition 回调。
javascript复制代码function MyCounter() { const [isPending, startTransition] = useTransition(); const [count, setCount] = useState(0); const increment = useCallback(() =>{ startTransition(() =>{ // 并发运行这个更新操作 setCount(count =>count + 1); }); }, []); return ( <>{isPending ? \"Pending\" : \"Not Pending\"} // 受益于并发特性的组件 >)}
试试看:
译者注:这里其实有 200 多个 Input 框,在 Non-Transition 的情况下,点击 Count 按钮后会感觉到 UI 界面明显有卡顿,而 Transition 模式则非常流畅。
从概念上讲,状态更新检测它们是否被包装在 startTransition 中,以决定是安排阻塞渲染还是并发渲染。
ini复制代码function startTransition(stateUpdates) { isInsideTransition = true; stateUpdates(); isInsideTransition = false;}function setState() { if (isInsideTransition) { // 安排并发渲染 } else { // 安排阻塞渲染 }}
useTransition 的一个重要警告是,它不能用于受控输入。对于这些情况,最好使用 useDeferredValue 。
useDeferredValue
useDeferredValue hook 是一个便捷的 hook,适用于你没有机会将状态更新包装在 startTransition 中,但仍希望并发运行更新的情况。
其中一个例子是,子组件从父组件接收一个新值。
从概念上看, useDeferredValue 是一个防抖动效果,可以实现如下:
scss复制代码function useDeferredValue(value: T) { const [isPending, startTransition] = useTransition(); const [state, setState] = useState(value); useEffect(() =>{ // 当输入更改时,分发并发渲染 startTransition(() =>{ setState(value); }); }, [value]) return state;}
它的使用方式与输入防抖动 hook 相同:
javascript复制代码function Child({ value }) { const deferredValue = useDeferredValue(value); // ...}
并发特性和 Suspense
useTransition 和 useDeferredValue hook 除了可选择启用并发渲染之外,还有一个作用是等待 Suspense 组件完成。
有关 Suspense 及其角色的主题,将在未来的文章中介绍。关注我可以第一时间了解。
原文:www.bbss.dev/posts/react…
标签:
相关阅读
-
理解 React 18 的“并发特性”,就这么简单
首发于公众号前端从进阶到入院,欢迎关注。Reactv18 0引入了一项期... -
东风风行和景逸S50哪个好?外观、空间、...
东风风行和景逸S50哪个好当选择一款合适的汽车时,消费者常常会面临... -
前四个月内蒙古自治区工业固定资产投资...
5月24日,自治区政府新闻办举行“以两件大事为主抓手推进内蒙古现代... -
环球快资讯:无尽之剑2太阳剑配什么宝石...
1、随着infinitybladeII的更新,最新版本中出现了武器无尽之剑2太阳... -
里包恩喜欢碧洋琪么_里包恩bg
1、无敌看板娘我是富江我不嫖你了第八个彩虹之子穿越就是往火坑里跳... -
广州到青岛高铁多少钱_广州到青岛高铁
1、广州到青岛高铁经过京广、合武、合蚌、京沪、济青五条高铁。2、... -
全球热推荐:begin的现在分词_begin的现...
欢迎观看本篇文章,小柴来为大家解答以上问题。begin的现在分词,be... -
当前动态:找工作要小心“求职陷阱” 警...
在高校毕业生即将走向职场之际,警方日前发布提示,提醒毕业生要小... -
小型计算机是指(小型计算机)|环球观焦点
小型计算机是指,小型计算机这个很多人还不知道,现在让我们一起来看... -
邮政银行定期存款取出需要身份证吗 官...
邮政银行是可以存定期的,存款期限不同利率不同,在邮政银行存了定... -
经济日报:“负首付”看似馅饼实为陷阱_...
近期,有房产中介声称可以“负首付”买房,吸引了不少购房者。“负... -
出师表拼音版全文翻译_出师表拼音版全文
1、chūshībiǎo 出 师 表 zhūgěliàng 诸 葛 亮 chénliàngyán: -
理解 React 18 的“并发特性”,就这么简单
首发于公众号前端从进阶到入院,欢迎关注。Reactv18 0引入了一项期... -
2023奇迹mu私服手游排行榜 最火的奇迹m...
,,奇迹游戏一直都是一个热门游戏类型,小编今天就给大家整理一个... -
热门奇迹mu私服手游合集 十大高人气奇...
,,奇迹类手游哪个最火爆呢?很多喜欢玩奇迹类手游的小伙伴不知道... -
Bungie新作《马拉松》将允许玩家改变游戏世界
在PlayStation发布会活动中,Bungie受到了广泛关注。这家去年被索尼... -
欧盟委员会副主席详解批准微软收购动视...
欧盟已批准微软斥资687亿美元收购动视暴雪的重大交易,其中一个参与... -
天天即时看!2023十大奇迹mu私服手游推...
,,你是不是最近都不知道玩哪些游戏了呢?如果你也是的话不如来看... -
东风风行和景逸S50哪个好?外观、空间、...
东风风行和景逸S50哪个好当选择一款合适的汽车时,消费者常常会面临... -
《失控玩家》女主参演《鬼屋魔影》游戏新作
THQNordic分享了《鬼屋魔影》游戏新细节,展示了游戏主要角色的配音... -
经典RPG《时空勇士》重制版能否有续作?...
使用HD-2D技术进行重制的经典RPG游戏《时空勇士》已经登陆Switch、P... -
续航破1000公里,瑞浦兰钧问顶电池成CIB...
日前,第15届深圳国际电池技术交流会 展览会(CIBF2023)在深圳国... -
前四个月内蒙古自治区工业固定资产投资...
5月24日,自治区政府新闻办举行“以两件大事为主抓手推进内蒙古现代... -
《心灵杀手2》有信心成为今年画质最好的...
厂商表示,心理恐怖游戏续作《心灵杀手2》将成为今年画面最为出色的... -
每日头条!塞尔达传说王国之泪库姆的源头...
塞尔达传说王国之泪库姆的源头洞窟的魔犹伊的遗失物是很多人想要知... -
爆料称索尼串流掌机Project Q将于今年1...
有报道称,PS5串流掌机ProjectQ将于今年年内发售。ProjectQ是在Play... -
环球快资讯:无尽之剑2太阳剑配什么宝石...
1、随着infinitybladeII的更新,最新版本中出现了武器无尽之剑2太阳... -
热门传奇私服手游合集 最火的传奇私服...
,小编为大家整理的最好玩的传奇手游排行榜,经典三大职业的加入,... -
里包恩喜欢碧洋琪么_里包恩bg
1、无敌看板娘我是富江我不嫖你了第八个彩虹之子穿越就是往火坑里跳... -
【焦点热闻】十大传奇私服手游合集 最...
,传奇类的游戏可以说是一大堆人的童年回忆了,那个时候还有很多人... -
《街头霸王6》开发者:游戏的对战部分才...
Capcom旗下备受期待的《街头霸王6》即将于2023年6月2日在PlayStatio... -
广州到青岛高铁多少钱_广州到青岛高铁
1、广州到青岛高铁经过京广、合武、合蚌、京沪、济青五条高铁。2、... -
塞尔达传说王国之泪卡尔加岭的洞窟的魔...
塞尔达传说王国之泪卡尔加岭的洞窟的魔犹伊的遗失物是很多人想要知... -
塞尔达传说王国之泪利利特特湖西边的洞...
塞尔达传说王国之泪利利特特湖西边的洞窟魔犹伊的遗失物是很多人想... -
塞尔达传说王国之泪吉萨的环形山的洞窟...
塞尔达传说王国之泪吉萨的环形山的洞窟魔犹伊的遗失物是很多人想要... -
塞尔达传说王国之泪卡卡利科村的洞窟魔...
塞尔达传说王国之泪卡卡利科村的洞窟魔犹伊的遗失物是很多人想要知... -
《极限竞速》新作封面图公布 将在Xbox...
Turn10工作室近日公布了《极限竞速》新作的封面图。在《极限竞速》... -
广西柳州有人涉嫌垄断驾培考场违反驾考规定
2022年7月22日广西弘彦项目管理有限责任公司发布招标公告,2022年柳... -
全球热推荐:begin的现在分词_begin的现...
欢迎观看本篇文章,小柴来为大家解答以上问题。begin的现在分词,be... -
天天速讯:《饿狼传说》人气角色比利全...
STUDIO24工作室经过SNK官方授权,全新《饿狼传说》系列手办推新品,... -
塞尔达传说王国之泪东格鲁德遗迹魔犹伊...
塞尔达传说王国之泪东格鲁德遗迹魔犹伊的遗失物是很多人想要知道位... -
环球短讯!凡人修仙传人界篇黄枫谷两个...
凡人修仙传人界篇黄枫谷两个机缘在哪里?想要完成机缘任务,那么大家... -
天天微速讯:爆料称索尼扣住多款游戏大...
有报道称,索尼在最近的PlayStation发布会活动中扣住多款游戏的信息... -
环球关注:塞尔达传说王国之泪中央格鲁...
塞尔达传说王国之泪中央格鲁德的洞窟魔犹伊的遗失物是很多人想要知... -
凡人修仙传人界篇神手谷机缘任务攻略
凡人修仙传人界篇神手谷机缘任务怎么做?玩家先要在地图中找到任务的... -
塞尔达传说王国之泪托斯迈吉亚台地的洞...
塞尔达传说王国之泪托斯迈吉亚台地的洞窟魔犹伊的遗失物是很多人想... -
宝可梦全新交响音乐会2023公开 8月10日...
宝可梦社日前宣布,联合NHK交响乐团举行交响音乐会2023,预定8月10... -
KONAMI公布《合金装备3:重制版》开发商...
《合金装备3:重制版》的开发商情报初见端倪,KONAMI自身也参与了开... -
每日焦点!塞尔达传说王国之泪格鲁德大...
塞尔达传说王国之泪格鲁德大化石魔犹伊的遗失物是很多人想要知道位... -
巴西新游《奴隶模拟器》火速下架 谷歌A...
巴西当地时间5月20日,一款名为《奴隶模拟器》的新手游登陆谷歌APP... -
塞尔达传说王国之泪拉聂尔参道南边的洞...
塞尔达传说王国之泪拉聂尔参道南边的洞窟魔犹伊的遗失物是很多人想... -
当前动态:找工作要小心“求职陷阱” 警...
在高校毕业生即将走向职场之际,警方日前发布提示,提醒毕业生要小... -
小型计算机是指(小型计算机)|环球观焦点
小型计算机是指,小型计算机这个很多人还不知道,现在让我们一起来看... -
塞尔达传说王国之泪海利亚湖的漩涡洞窟...
塞尔达传说王国之泪海利亚湖的漩涡洞窟魔犹伊的遗失物是很多人想要... -
塞尔达传说王国之泪花柔莉亚河上游的遗...
塞尔达传说王国之泪花柔莉亚河上游的遗迹窟魔犹伊的遗失物是很多人... -
塞尔达传说王国之泪斯塔尔里台地的洞窟...
塞尔达传说王国之泪斯塔尔里台地的洞窟魔犹伊的遗失物是很多人想要... -
网络流传《恶魔之魂》与《对马岛之鬼》P...
今日网络上有一张PC版《恶魔之魂:重制版》和《对马岛之鬼》上市日... -
索尼PlayStation Visual Arts工作室遭...
有消息称,索尼PlayStationVisualArts工作室遭遇重组和裁员。前Play... -
塞尔达传说王国之泪思古兰特树海的遗迹...
塞尔达传说王国之泪思古兰特树海的遗迹窟魔犹伊的遗失物是很多人想... -
今日精选:摩托车竞速游戏《极速骑行5》...
摩托车竞速游戏《极速骑行5(RIDE5)》新实机宣传片公开,该作由Mil... -
塞尔达传说王国之泪格鲁德小镇地下洞窟...
塞尔达传说王国之泪格鲁德小镇地下洞窟魔犹伊的遗失物是很多人想要... -
《赛马娘》新马娘与支援卡公开 美丽可...
超人气手机游戏《赛马娘》官方Cygames于5月27日宣布,两位全新马娘... -
全球看点:派对新游《借口是哪个》将登...
TT社宣布,旗下一款欢乐问答派对新游《借口是哪个》将于6月1日登陆S... -
天天快消息!塞尔达传说王国之泪乌波茨...
塞尔达传说王国之泪乌波茨台地的洞窟魔犹伊的遗失物是很多人想要知... -
开放世界建设游戏《阿加斯巴之塔》Steam...
在本周的PlayStation发表会上,Dreamlit开发的开放世界建设游戏《阿... -
《最终幻想16》坚持成人取向故事 不会...
《最终幻想16》即将于6月22日推出,近日游戏总监高井浩接受了媒体采... -
邮政银行定期存款取出需要身份证吗 官...
邮政银行是可以存定期的,存款期限不同利率不同,在邮政银行存了定... -
快资讯:塞尔达传说王国之泪克拉尔湖附...
塞尔达传说王国之泪克拉尔湖附近的洞窟魔犹伊的遗失物是很多人想要... -
《刀剑神域:异绊集结》发表预告片 ...
《刀剑神域:异绊集结》“系统”预告片 -
暴雪为了卖时光徽章和怀旧服玩家谈条件...
暴雪为了卖时光徽章和怀旧服玩家谈条件:削难度、加掉落、随机5人本... -
圣莫尼卡已为《战神》新作招募人手 或...
《战神5:诸神黄昏》是去年发售的最重要游戏之一,首周销量超过了50... -
一周全球新闻回顾:暴雪首次公开发声,...
从1月24日国服全家桶关闭到现在已经整整4个月的时间了,而暴雪在这... -
《银河战士Prime》已可在NS模拟器上120FPS运行
YouTube的“theboy181”分享了两个视频,展示了通过任天堂Switch模... -
【全球播资讯】新《暗黑破坏神4》背景故...
暴雪发布了另一段《暗黑破坏神4》的视频,介绍了《暗黑破坏神》系列... -
播报:DQ版大逃杀游戏《勇者斗恶龙:冠...
史克威尔的《勇者斗恶龙》系列又有了新作品,《勇者斗恶龙:冠军》... -
世界通讯!想体验吗?《地下城与勇士》...
据悉,《地下城与勇士》和《地下城与勇士Mobile》将在韩国成为线下... -
经济日报:“负首付”看似馅饼实为陷阱_...
近期,有房产中介声称可以“负首付”买房,吸引了不少购房者。“负... -
热游情报:虚幻5武侠动作新游公布!为中...
热游情报:虚幻5武侠动作新游公布!为中国争口气?网易10亿砸出全新... -
世界简讯:运营不足半年!DNF之父吃鸡端...
运营不足半年!DNF之父吃鸡端游《超击突破2》宣布停运,【17173鲜游... -
宝可梦+塞尔达,14000+融合形态打造最强...
宝可梦+塞尔达,14000+融合形态打造最强宝可梦代餐《磁带妖怪》,当... -
当前视讯!暗黑周报:开始发力!暴雪疯...
暗黑周报:开始发力!暴雪疯狂宣传《暗黑4》,蔡依林火辣献声MV,《... -
世界新动态:传统MMO文艺复兴?2.5D升级...
传统MMO文艺复兴?2 5D升级到3D,《王权与自由》有哪些变化?,现如... -
出师表拼音版全文翻译_出师表拼音版全文
1、chūshībiǎo 出 师 表 zhūgěliàng 诸 葛 亮 chénliàngyán: -
火炬之光无限召唤速刷BD天赋推荐|焦点
火炬之光无限召唤速刷流怎么玩?天赋加点怎么加?玩家在游戏中可以选... -
江南百景图桃花村围棋必胜攻略 天天快播报
江南百景图是一款传统的城建类型游戏。玩家在游戏中规划、建造,让荒... -
勇者深渊天赋加点选择建议_全球新资讯
勇者深渊天赋加点怎么选择?勇者深渊里面的话很多玩家都想要选择适合... -
天龙八部2雁门关打法攻略 环球消息
雁门关在天龙八部中有着很重要地位,是很多剧情都绕不开的地方,雁门... -
剑与远征竞速梦境阵容推荐
剑与远征竞速梦境阵容怎么搭配?竞速梦境对阵容的搭配有很高要求,今... -
小米14 Pro和红米K60 Ultra均传出外观...
但话说回来,虽然新机的节奏并不快,然而市场中却会提前爆料出关于... -
关爱自闭症儿童,让我们与爱同行~|环球...
有这样一群特殊的儿童,他们被称为“星星的孩子”,他们像星星一样... -
水利水电工程基础 下册_关于水利水电工...
1、《水利水电工程基础(下册)》是2010年出版的图书。2、作者是徐... -
记者:巴索戈、崔麟参与申花队合练_环球...
直播吧5月27日讯本周日,上海申花将在主场迎战河南队。据记者杨翼报... -
火车修理工模拟2023需要什么配置
《火车修理工模拟2023》是一款非常有趣的沉浸式模拟火车休闲交通运... -
云天化股份董事长段文瀚:从提升企业活...
今日(5月27日),中国上市公司协会年会(理事会)暨2023中国上市公... -
伊尔多之围攻有什么特色内容
《伊尔多之围攻》是一款非常有趣的以黑暗的中世纪为背景的城市建设... -
《卧龙:苍天陨落》1.08更新上线 已修...
《卧龙:苍天陨落》昨天更新了1 08版本,不过这次更新导致Steam和... -
天天短讯!《最终幻想16》首发有二周目...
外媒GameInformer最近采访到了《最终幻想16》的创意总监高井浩和战... -
68岁老头和36岁女人成了夫妻,当晚办事...
【粉丝来信】我徘徊在医院的走廊上,焦虑和担忧交织在心头。一场意... -
夏季游戏节将有《寂静岭》新作的预告片...
据知名舅舅党DuskGolem爆料,他已经看过《寂静岭》系列所有新作的新... -
为什么牛油果分级?
被分为5个级品,一二级品是进行出口销售,三级品是在本地的市场上进... -
光遇活动代币怎么获得 活动代币获取方...
光遇是一款治愈社交玩法,玩家可以在游戏中找到伙伴一起游玩,结伴同... -
【天天播资讯】约翰迪尔 455 故障排除...
你需要的东西软管储气罐柴油染料如果您的割草机无法启动,您可以采... -
第五人格二十四节气芒种活动怎么玩 二...
第五人格是一款非常火爆的非对称性竞技游戏,游戏类似于躲猫猫和抓人... -
全球热点评!原神七圣召唤纳西妲卡牌怎...
卡牌游戏也非常受玩家欢迎,3 7版本更新后增添了很多卡牌,下面就给... -
光轴是什么钢材_光轴是什么
1、光轴(光学系统的对称轴) 光束(光柱)的中心线,或光学系统... -
闪耀暖暖复古胶片写真怎么搭配 复古胶...
闪耀暖暖是一款非常火爆的装扮化妆游戏,玩家可以在游戏中运用捏脸功... -
每日讯息!《影之刃零》大量细节公布 游...
在索尼最近的PlayStation发布会上,S-Game的《影之刃零》是一个重大... -
《自杀小队:战胜正义联盟》ESRB评级信...
《自杀小队:战胜正义联盟》的ESRB评级和评述已经出现,而且这与人... -
焦点讯息:实丰文化:公司股东户数请您...
实丰文化05月27日在投资者关系平台上答复了投资者关心的问题。实丰... -
每日关注!热门奇迹mu私服手游合集 高人...
,,有哪些非常有趣的奇迹类手游推荐?奇迹类手游是近几年非常火爆... -
塞尔达传说王国之泪撒戎树海的洞窟魔犹...
塞尔达传说王国之泪撒戎树海的洞窟魔犹伊的遗失物是很多人想要知道... -
世界短讯!AI三天做款游戏 ChatGPT文字...
今日(5月27日),一位名为OlegChumakov游戏开发者公开了一款几乎完...