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. 「雕爷学编程」Arduino动手做(35)——模拟量声音传感器

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  2. P3254 圆桌问题 网络流

    P3254 圆桌问题 #include <bits/stdc++.h> using namespace std; , inf = 0x3f3f3f; struct Edge { int f ...

  3. css概述三

    五.盒子模型 4.box-sizing 定义盒子模型的计算方式 box-sizing:content-box; 默认值,我们定义的width/height是内容区域 元素占地宽度=左外边距+左边框+左 ...

  4. 3.3 Go浮点型

    1.Go浮点型 Go 语言提供了两种精度的浮点数,float32 和 float64,编译器默认声明为float64 小数类型就是存放小数的,如1.2 0.005 -2.32 package main ...

  5. Python操作MongoDB代码示例

    import pymongo #pip install pymongo安装python操作mongodb的模块 myclient=pymongo.MongoClient(host='127.0.0.1 ...

  6. GeoServer2.17与Jetty9在Windows上的最佳安装实践

    1 JDK的选择 我使用了adopted openjdk8.0.252,安装简便,只需添加2个环境变量(JAVA_HOME,JRE_HOME)即可. 我的安装路径: C:\SDKs\adoptopen ...

  7. Spring Bean 后置处理器

    Bean 后置处理器允许在调用初始化方法前后对 Bean 进行额外的处理. BeanPostProcessor 接口定义回调方法,你可以实现该方法来提供自己的实例化逻辑,依赖解析逻辑等. 你也可以在 ...

  8. 在IDEA中使用Spring写一个HelloWorld

    准备工作 1.使用IDEA2018专业版, 我试了IDEA2019教育版和IDEA2020社区版,都无法顺利创建一个Spring项目,实在是恼火,一气之下,统统卸载掉. 重装了一个IDEA2018专业 ...

  9. 一、$HTML, HTTP,web综合问题

    1.前端需要注意哪些SEO 合理的title.description.keywords:搜索对着三项的权重逐个减小,title值强调重点即可,重要关键词出现不要超过2次,而且要靠前,不同页面title ...

  10. 程序员都在用的 IDEA 插件(不断更新)

    IDEA一些不错的插件分享 目录 IDEA一些不错的插件分享 插件集合 CamelCase Translation LiveEdit MarkDown Navigator Jrebel CheckSt ...