react中组件经常会重复使用,所以我们可以封装组件进行多功能的复用,常用的组件复用模式有:render props模式和高阶组件模式

高阶组件使用步骤:

  1. 创建一个以with开头函数(目前我们约定with开头的组件为高阶组件)
  2. 指定一个函数参数,首字母大写,作为渲染组件的组件名
  3. 函数内部创建一个类组件,用来提供用于复用的逻辑代码并返回
  4. 在高阶组件内渲染参数组件,将状态通过props传递给参数组件
  5. 调用高阶组件,传入想要增强的组件,通过返回值拿到新组建,并渲染到页面中

注意:react组件默认用组件名称为组件名,高阶组件渲染出的组件都是用高阶组件名作为组件名,多个渲染出来的组件名称是一样的,所以我们需要给高阶组件修改名称

import React from 'react'
function withMove(WrappedComponent) {class App extends React.Component {state = {x: 0,y:0}handleMouseMove=(e)=> {this.setState({x: e.clientX,y: e.clientY,})}componentDidMount() {window.addEventListener('mousemove',this.handleMouseMove)}componentWillUnmount() {window.removeEventListener('mousemove',this.handleMouseMove)}render() {return (<WrappedComponent {...this.state} />)}}App.displayName=`withMove${getDisplayName(WrappedComponent)}`return App
}function getDisplayName(WrappedComponent) {return WrappedComponent.displayName || WrappedComponent.name || 'Component'
}export default withMove
import withMove from './pages/comC'const Position = props => (<p>鼠标位置:<br />x:{props.x} <br />y:{props.y}</p>
)const WithPosition = withMove(Position)function App() {return (<WithPosition />);}

React 高阶组件示例相关推荐

  1. react实现汉堡_利用 React 高阶组件实现一个面包屑导航

    什么是 React 高阶组件 React 高阶组件就是以高阶函数的方式包裹需要修饰的 React 组件,并返回处理完成后的 React 组件.React 高阶组件在 React 生态中使用的非常频繁, ...

  2. React高阶组件探究

    React高阶组件探究 在使用React构建项目的过程中,经常会碰到在不同的组件中需要用到相同功能的情况.不过我们知道,去这些组件中到处编写同样的代码并不优雅. 在以往,为了解决以上的情况,我们会用到 ...

  3. react 高阶组件

    react 高阶组件 概述 目的:实现状态逻辑复用 采用 包装(装饰)模式,比如说:手机壳 手机:获取保护功能 手机壳:提供保护功能 高阶组件就相当于手机壳,通过包装组件,增强组件功能 思路分析 高阶 ...

  4. react高阶组件和hooks

    1. react高阶组件 1.1 高阶组件的概念 高阶组件(Higher Order Component,简称:HOC ): 是 React 中用于重用组件逻辑的高级技术, 它本身不是react中的组 ...

  5. React高阶组件实践

    前言 React高阶组件,即 Higher-Order Component,其官方解释是: A higher-order component is a function that takes a co ...

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

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

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

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

  8. react组件类型及深入理解react高阶组件

    React中常见的组件类型及分类: 1.展示组件(Presentational component) 与 容器组件(Container component) 2.类组件(Class component ...

  9. React高阶组件_阶段1

    react高阶组件_阶段1 作用: 个人总结的高阶组件设计的作用主要有两点, 这里直接使用装饰器方式 非装饰器使用请结合我的博文"react基础梳理_阶段1"中的"自定义 ...

最新文章

  1. Linux/Unix中的重定向简单实例
  2. Android WebView缓存策略详解
  3. google nexus5x 刷机抓包逆向环境配置(一)
  4. 如何用python制作九九乘法表_Python一行代码给儿子制作九九乘法表
  5. 两个oracle数据库外网同步,利用DBLink+JOB实现两个Oracle数据库之间的数据同步
  6. TiDB 源码阅读系列文章(二十二)Hash Aggregation
  7. java将图片传给页面,java将图片传为设定编码值显示(可做刺绣)
  8. python划分有限元网格_有限元分析网格划分的步骤和类型
  9. python2.4无线模块_使用nRF24L01模块进行无线射频通信
  10. adb 切换默认桌面_android tv 模拟器默认桌面修改 Alternate Launcher开机自动启动app...
  11. 映美精IC Imageing Control .net控件调试问题
  12. List of music used by Apple Inc.
  13. 奇迹mysql老是被误杀_【鸟友汇】致歉少时打雀被误杀的生灵们:傻老嘎、春暖儿、窜鸡、老麦……...
  14. EditText光标始终保持在文字末尾
  15. 惠普计算机怎样添加程序,小编教你惠普电脑如何进入bios设置
  16. 实现 Google 第三方授权登录
  17. 来说说,东方国信入职3个月的体验~~~
  18. MySQL系统流程图怎么画_Word流程图怎么画?如何轻松绘制流程图
  19. 过去10年最重要的10个 JavaScript 框架
  20. 全球及中国自然循环蒸发器行业研究及十四五规划分析报告

热门文章

  1. gh60(OK60RGB)刷固件折腾日志(MacOs版)
  2. JS实现网页自动跳转
  3. Android App 性能测试工具GT
  4. 耗时一个星期整理的APP自动化测试工具大全
  5. Linux ~ minicom
  6. 2021年“春秋杯”新年欢乐赛--十二宫的挑衅
  7. 【源码】MarcusVollmer/HRV:用于心电图数据筛选以及心率变异性分析
  8. oracle p6 破解版下载,Primavera P6项目管理软件 16~17 图文详细安装教程(附下载)
  9. CentOS7+ApacheServer2.4+MariaDB10.0+PHP7.0+禅道项目管理软件8.0环境部署
  10. 【ESP32CAM识别图形左边界】(三)识别图像左边界