1、高阶组件:封装
高阶组件使用得是react得一种模式,增强现有组件得功能
一个高阶组件就是一个函数,这个函数接收得是组件类作为参数得,并且返回得是一个新组件,再返回得新组件中有输入参数组件不具备得功能(以上提到得所有得组件都不是组件得实例,是类,输入得这个组件也可以是无状态组件函数)
2、高阶组件意义:
重用代码
可以修改现有组件得行为
3、实现高阶组件得方式:代理式的高阶组件、继承式的高阶组件
4、代理式得高阶组件--属性代理
5、继承式的高阶组件--反向继承来实现得
6、高阶组件缺点:
静态方法会丢失:
因为原始组件时被包裹再新组件中得,新组件没有原始组件得任何静态方法
refs属性不能传递:
高阶组件可以传递所有得props给包裹得组件Com,但是有一个属性不行,ref,如果我们给高阶组件创建得组件添加ref得话,ref指向的时最外城的容器组件,不是包裹的Com组件解决方法使用react中提供的React.forwardRef来获取
反向继承不能保证完整得子组件被解析:
组件分为class类组件和function函数组件
如果渲染的时候包含function组件的话那么就不能操作组件的子组件了
7、高阶组件可以带给我们很大方便,规则:
props保持一致:
再使用高解组件的时候返回的组件要尽量保持和原组件的props一致
不能再函数组件上使用ref属性,因为函数组件没有办法进行实例
不要以任何方式改变原始组件(第三方组件)
不要再render方法中再使用高阶组件了
在使用传值的时候要把不相关的props进行包裹起来
包裹组件显示名字以便测试

import React, { Component } from 'react'

import ReactDom from 'react-dom' ;

class Hello extends Component{
render(){
return(
<div>
我是hello组件
姓名:{this.props.name}
</div>
)
}
}
// const testHellow =( Com) =>{ //prop 代理高阶组件
// return class extends Component{
// // constructor(props){
// // super(props)
// // this.setState={
// // sex="男",
// // hobby:"篮球"
// // }
// // } // render(){
// return(
// <div>
// <Com {...this.props}/>
// </div>
// )
// }
// }
// } const testHellow =( Com) =>{ //继承高阶组件
return class extends Com{ render(){
return(
<div>
新的
{super.render()}
</div>
)
}
}
} let Test=testHellow(Hello) class Gao extends Component {
render() {
return ( <Test name="tzb"/> )
}
}
ReactDom.render(
<Gao/>,
document.getElementById("root")
)

8、react 高阶组件的更多相关文章

  1. 聊聊React高阶组件(Higher-Order Components)

    使用 react已经有不短的时间了,最近看到关于 react高阶组件的一篇文章,看了之后顿时眼前一亮,对于我这种还在新手村晃荡.一切朝着打怪升级看齐的小喽啰来说,像这种难度不是太高同时门槛也不是那么低 ...

  2. 当初要是看了这篇,React高阶组件早会了

    当初要是看了这篇,React高阶组件早会了. 概况: 什么是高阶组件? 高阶部件是一种用于复用组件逻辑的高级技术,它并不是 React API的一部分,而是从React 演化而来的一种模式. 具体地说 ...

  3. react高阶组件的理解

    [高阶组件和函数式编程] function hello() { console.log('hello jason'); } function WrapperHello(fn) { return fun ...

  4. 函数式编程与React高阶组件

    相信不少看过一些框架或者是类库的人都有印象,一个函数叫什么creator或者是什么什么createToFuntion,总是接收一个函数,来返回另一个函数.这是一个高阶函数,它可以接收函数可以当参数,也 ...

  5. React高阶组件学习笔记

    高阶函数的基本概念: 函数可以作为参数被传递,函数可以作为函数值输出. 高阶组件基本概念: 高阶组件就说接受一个组件作为参数,并返回一个新组件的函数. 为什么需要高阶组件 多个组件都需要某个相同的功能 ...

  6. 利用 React 高阶组件实现一个面包屑导航

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

  7. react高阶组件的一些运用

    今天学习了react高阶组件,刚接触react学习起来还是比较困难,和大家分享一下今天学习的知识吧,另外缺少的地方欢迎补充哈哈 高阶组件(Higher Order Components,简称:HOC) ...

  8. React——高阶组件

    1.在React中higher-order component (HOC)是一种重用组件逻辑的高级技术.HOC不是React API中的一部分.HOC是一个函数,该函数接收一个组件并且返回一个新组件. ...

  9. react 高阶组件的 理解和应用

    高阶组件是什么东西 简单的理解是:一个包装了另一个基础组件的组件.(相对高阶组件来说,我习惯把被包装的组件称为基础组件) 注意:这里说的是包装,可以理解成包裹和组装: 具体的是高阶组件的两种形式吧: ...

  10. react高阶组件的使用

    为了提高代码的复用在react中我们可以使用高阶组件 1.添加高阶组件 高阶组件主要代码模板HOC.js export default (WrappedComponent) => { retur ...

随机推荐

  1. .net core kafka 入门实例 一篇看懂

      kafka 相信都有听说过,不管有没有用过,在江湖上可以说是大名鼎鼎,就像天龙八部里的乔峰.国际惯例,先介绍生平事迹   简介 Kafka 是由 Apache软件基金会 开发的一个开源流处理平台, ...

  2. 【Python代码】TSNE高维数据降维可视化工具 + python实现

    目录 1.概述 1.1 什么是TSNE 1.2 TSNE原理 1.2.1入门的原理介绍 1.2.2进阶的原理介绍 1.2.2.1 高维距离表示 1.2.2.2 低维相似度表示 1.2.2.3 惩罚函数 ...

  3. Django之钩子Hook方法

    局部钩子: 在Fom类中定义 clean_字段名() 方法,就能够实现对特定字段进行校验.(校验函数正常必须返回当前字段值)  def clean_name(self): pass         n ...

  4. Java基础知识面试题及答案-整理

    1.String类可以被继承吗?  不能.String类在声明中使用final关键字修饰符.使用final关键字修饰的类无法被继承. Java语言的开发者为什么要将String类定义为final类呢? ...

  5. 避免scrollview内部控件输入时被键盘遮挡,监听键盘弹起,配合做滚动

    1,监听键盘 2,根据当前键盘弹起高度与控件的底部位置计算滑动距离 3,根据滑动距离在键盘弹起和隐藏是分别设置动画完成滑动     实现: 1,监听键盘使用   #pragma mark - 键盘监听 ...

  6. adb常用命令食用方法

    一.什么是adb? adb是Android Debug Bridge的缩写,即安卓调试桥:那什么是安卓调试桥?简单来说,就是一个通用命令行工具,允许计算机与模拟器或连接的安卓设备之间进行通信,提供各种 ...

  7. SSH_ProductCRUD的项目结构与配置文件

    项目结构 各类配置文件 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hib ...

  8. Java-main方法中调用非static方法

    java的calss中,在public static void main(String[] args) { }方法中调用非static的方法:在main方法中创建该calss的对象,用对象调用非sta ...

  9. IO字节流与字符流的操作

    字节流:        FileInputStream读取,FileOutputStream输出 字节流使用数组缓冲区复制文件,最后得出所使用的时间 public class work2 { publ ...

  10. UIAutomator2的API文档(三)

    1.UI对象识别器Selector 用法d(text='Clock', className='android.widget.TextView') 支持以下参数,详细信息可参考UiSelector Ja ...