加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

【React深入】从Mixin到HOC再到Hook

发布时间:2019-04-12 04:39:12 所属栏目:优化 来源:ConardLi
导读:导读 前端发展速度非常之快,页面和组件变得越来越复杂,如何更好的实现状态逻辑复用一直都是应用程序中重要的一部分,这直接关系着应用程序的质量以及维护的难易程度。 本文介绍了React采用的三种实现状态逻辑复用的技术,并分析了他们的实现原理、使用方

注意,如果加上浏览器渲染的情况,结果应该是这样的:

  1. 页面渲染...1  
  2.  执行... 1  
  3.  页面渲染...2  
  4.  清理... 1  
  5.  执行... 2  
  6.  页面渲染...3  
  7.  清理... 2  
  8.  执行... 3  
  9.  页面渲染...4  
  10.  清理... 3  
  11.  执行... 4 

那么为什么在浏览器渲染完后,再执行清理的方法还能找到上次的state呢?原因很简单,我们在useEffect中返回的是一个函数,这形成了一个闭包,这能保证我们上一次执行函数存储的变量不被销毁和污染。

你可以尝试下面的代码可能更好理解 

  1. var flag = 1;  
  2.     var clean;  
  3.     function effect(flag) {  
  4.       return function () {  
  5.         console.log(flag);  
  6.       }  
  7.     }  
  8.     clean = effect(flag);  
  9.     flag = 2;  
  10.     clean();  
  11.     clean = effect(flag);  
  12.     flag = 3;  
  13.     clean();  
  14.     clean = effect(flag);  
  15.     // 执行结果  
  16.     effect... 1  
  17.     clean... 1  
  18.     effect... 2  
  19.     clean... 2  
  20.     effect... 3 

模拟componentDidMount

componentDidMount等价于useEffect的回调仅在页面初始化完成后执行一次,当useEffect的第二个参数传入一个空数组时可以实现这个效果。

  1. function useDidMount(callback) {  
  2.   useEffect(callback, []);  

官方不推荐上面这种写法,因为这有可能导致一些错误。

(编辑:晋中站长网)

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

热点阅读