【温故知新】梳理React中HOC的点点滴滴

前言

由于不可避免的遗忘曲线和最初潦草学习等诸多因素,我获得的某些技术点会存在没有吃透或者出现了被遗忘的情况。幸运的是,我有经验积累这个增益buff,能够不时的有新的开发思路诞生。

此消彼长,也不是长久之计。于是我想通过温故知新的方式,重拾部分技术知识或者提炼一些有趣的“奇思妙想”。

本篇主要重新梳理一下React的HOC。

温故而知新,可以为师矣。

带着问题去寻找答案

如果我还是单纯的看一遍文档,到最后估计收获不大。所以,我在开始前,列了一些自己的疑问以及带着这些疑问要找到答案。

  • 为什么提起HOC总会看到Mixins的身影?
  • 横切关注点到底是什么?为什么文档里面提到HOC解决了横切关注点问题?
  • React为什么用HOC替代Mixins?
  • 为什么我平时用不上HOC?
  • 我怎样才能用的上HOC?

HOC和它的兄弟Mixins

先来聊一下HOC和Mixins这对兄弟的前情提要。

为了解决横切关注点问题,早先React也是采用Mixins方式,但是随着组件的增加,Mixins方式带来了一系列的问题,比如隐式依赖、名称冲突、代码复杂性增加等。

所以React采用HOC的设计模式替代Mixins解决横切关注问题。

名词解释时间

横切关注点

React文档里面提到

如果完全不同的组件有相似的功能,这就会产生“横切关注点(cross-cutting concerns)“问题

知乎文章 《面向对象困境之 —— 横切关注点》 ,介绍了关注点和横切关注点,并举了日志功能的例子,写的非常好,我把前面的介绍贴出来,帮助大家更好理解。

什么是关注点(Concern)?

A Concern is a term that refers to a part of the system divided on the basis of the functionality.

关注点是指基于功能划分系统的一部分。

什么是横切关注点(Crosscutting Concern)?

部分关注点「横切」程序代码中的数个模块,即在多个模块中都有出现,它们即被称作「横切关注点(Cross-cutting concerns, Horizontal concerns)」。

这样说好像还是特别抽象?那我们举个例子。

日志功能就是横切关注点的一个典型案例。日志功能往往横跨系统中的每个业务模块,即“横切”所有需要日志功能的类和方法体。所以我们说日志成为了横切整个系统对象结构的关注点 —— 也就叫做横切关注点啦。

解决横切关注点不是提炼某个公共方法那么简单,公

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值