加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

effect的整理论述并不完全精确缘故起因是什么

发布时间:2021-05-21 21:13:19 所属栏目:编程 来源:互联网
导读:在前面的描写中或多或少涉及到对付effect的整理,只是为了便于一个领略,但描写并不完全精确。 譬喻下面的例子: useEffect(()={ ChatAPI.subscribeToFriendStat

在前面的描写中或多或少涉及到对付effect的整理,只是为了便于一个领略,但描写并不完全精确。

譬喻下面的例子:

useEffect(() => { 

  ChatAPI.subscribeToFriendStatus(props.id, handleStatusChange); 

  return () => { 

    ChatAPI.unsubscribeFromFriendStatus(props.id, handleStatusChange); 

  }; 

}); 

假设第一次渲染的时辰props是{id: 10},第二次渲染的时辰是{id: 20}。你也许会以为产生了下面的这些事:

React 破除了 {id: 10}的effect。

React 渲染{id: 20}的UI。

React 运行{id: 20}的effect。

可是现实环境并非云云,假如凭证这种心智模子来领略,那么在破除时辰,获取的值是之前的旧值,由于破除是在渲染新UI之前完成的。这和之前说到的React只会在赏识器绘制之后执行effects抵牾。

React这样做的甜头是不会阻塞赏识器的一个渲染(屏幕更新)。虽然,凭证这个法则,effect的破除也被耽误到了赏识器绘制UI之后。那么正确的执行次序应该是:

React渲染了id 20 的UI

React破除了id 10的effect

React运行id 20的effect

那么为啥effect里破除的是旧的呐?

组件内的每一个函数(包罗变乱处理赏罚函数,effects,按时器可能API挪用等等)会捕捉界说它们的那次渲染中的props和state。

那么,effect的破除并不会读取到“最新”的props,它只能读取到界说它那次渲染中props的值

人类成长的历程中裁减的永久都是不思进取的保守派。React中亦是云云头脑,或者激进,但大大都人们总等候“新桃换旧符”。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读