高阶组件

高阶组件(HOC)是react中对组件逻辑进行重用的高级技术。但高阶组件本身并不是React
API。它只是一种模式,这种模式是由react自身的组合性质必然产生的。


具体而言,高阶组件就是一个函数,且该函数接受一个组件作为参数,并返回一个新的组件,高阶组件会对传入的组件做一些通用的处理。比如:我们希望给组件的的下方增加一个版权信息,那么就可以使用高阶组件。把原始组件传入,然后,给组件增加一个版权信息后,再返回。


高阶组件是通过将原组件 包裹(wrapping) 在容器组件(container
component)里面的方式来组合(composes) 使用原组件。高阶组件就是一个没有副作用的纯函数。

// 带上版权的高阶函数
function withCopyRight(OldCom){class NewCom extends React.Component{      render() {return (<div><OldCom /><hr/><div>Copyright © 2020 Sohu All Rights Reserved. 搜狐公司 版权所有</div></div>);}}   return NewCom;
}//原始组件
class CommentList extends React.Component {render() {      return (<div>新闻11111111111111111111</div>);}
}//调用高阶函数后的组件
const CommentListWithCopyRight = withCopyRight(CommentList);ReactDOM.render( <div> <CommentListWithCopyRight /></div> ,$("box"));
function $(id){return document.getElementById(id);
}
  • 高阶组件的注意点:

    1、不要在render函数里使用高阶组件2、必须将静态(static)方法做拷贝​
    当使用高阶组件包装组件,原始组件被容器组件包裹,也就意味着新组件会丢失原始组件的所有静态方法,解决这个问题的方法就是,将原始组件的所有静态方法全部拷贝给新组件。3、Refs不能传递一般来说,高阶组件可以传递所有的props属性给包裹的组件,但是不能传递refs引用。4、不要在高阶组件内部修改(或以其它方式修改)原组件的原型属性(prototype)。5、约定:将不相关的props属性传递给包裹组件6、约定:最大化使用组合7、约定:包装显示名字以便于调试
    

React的高阶组件(HOC)的构建与应用相关推荐

  1. [react] 使用高阶组件(HOC)实现一个loading组件

    [react] 使用高阶组件(HOC)实现一个loading组件 function HOC(wrappedComponent) {return class extends React.Componen ...

  2. react学习—高阶组件HOC

    高阶组件HOC 一.高阶组件HOC 1.高阶组件 2.属性传递 3.使用属性传递 4.注意 一.高阶组件HOC HOF:Higher-Order Function, 高阶函数,以函数作为参数,并返回一 ...

  3. React Native高阶组件(HOC)模型理论与实践

    什么是HOC? HOC(全称Higher-order component)是一种React的进阶使用方法,主要还是为了便于组件的复用.HOC就是一个方法,获取一个组件,返回一个更高级的组件. 什么时候 ...

  4. React的高阶组件(HOC)

    1. 概念 高阶组件和高阶函数的类似,使用函数接收一个组件,并返回一个组件. function withList(WrapComponent) {return class extends Compon ...

  5. [react] 高阶组件(HOC)有哪些优点和缺点?

    [react] 高阶组件(HOC)有哪些优点和缺点? HOC 优点 通过传递props去影响内层组件的状态,不直接改变内层组件的状态,降低了耦合度 缺点 组件多层嵌套, 增加复杂度与理解成本 ref隔 ...

  6. [react] 举例说明什么是高阶组件(HOC)的反向继承

    [react] 举例说明什么是高阶组件(HOC)的反向继承 import React from 'react';const hoc = (WrappedComponent) => {// 集成需 ...

  7. [react] 举例说明什么是高阶组件(HOC)的属性代理

    [react] 举例说明什么是高阶组件(HOC)的属性代理 function HOC(WrappedComponent) {return class HOC extends Component {re ...

  8. 「react进阶」一文吃透React高阶组件(HOC)

    一 前言 React高阶组件(HOC),对于很多react开发者来说并不陌生,它是灵活使用react组件的一种技巧,高阶组件本身不是组件,它是一个参数为组件,返回值也是一个组件的函数.高阶作用用于强化 ...

  9. React 高阶组件HOC使用总结

    HOC(高阶组件) /*HOC(高阶组件): 接收一个组件,返回包装后的组件(增强组件)- 不是React API- 是一种设计模式,类似于装饰器模式- ≈ Mixin && > ...

  10. react 高阶组件hoc使用

    react 高阶组件hoc使用 1. 为什么使用高阶组件 2. 具体使用 2.1原代码: 2.2 使用hoc封装后 1. 为什么使用高阶组件 高阶组件(HOC)是 React 中用于复用组件逻辑的一种 ...

最新文章

  1. [Java工程师面试精选]Redis cluster集群模式的原理
  2. mysql ibdata作用_mysql data文件夹下ibdata1 文件作用
  3. 第一天2017/03/28
  4. android-x86 镜像iso下载_Windows 10(1909)最新12月更新版MSDN官方简体中文原版ISO镜像下载+激huo工ju...
  5. jps 显示有问题 解决方法
  6. 串口循环缓存区 简单 免初始化 不用堆、指针、分段memcpy
  7. [前端]如何让图片等比例缩放,同时撑满父级容器的长或宽
  8. n160ii打印机查看ip地址_芯烨ip地址设定软件下载|
  9. CMMI中的过程改进
  10. 94页5万字市级应急平台建设方案
  11. 服务器系统文件sam在哪里,SAM文件介绍
  12. python 画彩虹_python – 在matplotlib中,我如何绘制多色线,如彩虹
  13. 好看的皮囊 · 也是大自然的杰作 · 全球高质量 · 美图 · 集中营 · 美女 · 2017-08-22期...
  14. C语言自动预订飞机票问题
  15. 【第二章】NB-IoT模组BC95入网测试
  16. 最新DOS启动盘制作全攻略
  17. MotionEvent 初探
  18. 基于SSM实现的人力资源管理系统【附源码】(毕设)
  19. 互联网的「中年危机」是什么?程序员对中年被裁有什么误解
  20. mysql事件示例_卓象程序员:Mysql数据库事件使用与示例

热门文章

  1. 关于GetDC与GetWindowDC
  2. MySQL配置用户权限
  3. 客户端负载均衡 Loadbalancer
  4. 论文详解:The Correctness-Security Gap in Compiler Optimization
  5. 16.6 用 Twilio 发送短信
  6. 银行家算法c语言博客,操作系统之银行家算法
  7. 便携式恒温冷藏自动采样器——助力水中病毒监测
  8. 【报告分享】如何角逐存量车市-易车研究院(附下载)
  9. 1987-1993年考研数学二真题及其详解
  10. 微信8.0来了,可以加1w人好友,微商必看!!!