effect的整理论述并不完全精确缘故起因是什么
在前面的描写中或多或少涉及到对付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中亦是云云头脑,或者激进,但大大都人们总等候“新桃换旧符”。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |