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

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

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

Decorators是ES7的一个提案,还没有被标准化,但目前Babel转码器已经支持,我们需要提前配置babel-plugin-transform-decorators-legacy:

  1. "plugins": ["transform-decorators-legacy"] 

还可以结合上面的compose函数使用:

  1. const hoc = compose(logger, visible, style);  
  2. @hoc  
  3. class Input extends Component {  
  4.   // ...  

HOC的实际应用

下面是一些我在生产环境中实际对HOC的实际应用场景,由于文章篇幅原因,代码经过很多简化,如有问题欢迎在评论区指出:

日志打点

实际上这属于一类最常见的应用,多个组件拥有类似的逻辑,我们要对重复的逻辑进行复用,

官方文档中CommentList的示例也是解决了代码复用问题,写的很详细,有兴趣可以👇使用高阶组件(HOC)解决横切关注点。

某些页面需要记录用户行为,性能指标等等,通过高阶组件做这些事情可以省去很多重复代码。

  1. function logHoc(WrappedComponent) {  
  2.   return class extends Component {  
  3.     componentWillMount() {  
  4.       this.start = Date.now();  
  5.     }  
  6.     componentDidMount() {  
  7.       this.end = Date.now();  
  8.       console.log(`${WrappedComponent.dispalyName} 渲染时间:${this.end - this.start} ms`);  
  9.       console.log(`${user}进入${WrappedComponent.dispalyName}`);  
  10.     }  
  11.     componentWillUnmount() {  
  12.       console.log(`${user}退出${WrappedComponent.dispalyName}`);  
  13.     }  
  14.     render() {  
  15.       return <WrappedComponent {...this.props} />  
  16.     }  
  17.   }  

(编辑:晋中站长网)

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

热点阅读