高阶组件:定义一个函数,传入一个组件,返回另外一个组件,另外一个组件包裹了传入的组件。

分类:属性代理高阶组件,反向继承高阶组件。

作用:代码复用,渲染节时。

高阶函数例子:

function hello(){
console.log('hello imooc I love React')
} function WrapperHello(fn){
return function(){
console.log('before say hello')
fn()
console.log('after say hello')
}
}
hello = WrapperHello(hello)
hello()

高阶组件例子:

//属性代理
function WrapperHello(Comp){
class WrapComp extends React.Component{
render(){
return (<div>
<p>这是HOC高阶组件特有的元素</p>
<Comp name='text' {...this.props}></Comp>
</div>)
}
}
return WrapComp
}
WrapperHello(
class Hello extends React.Component{
render(){
return <h2>hello imooc I love React&Rdux</h2>
}
}
)
//反向继承
function WrapperHello(Comp){
class WrapComp extends Comp{
componentDidMount(){
console.log('高阶组件新增的生命周期,加载完成')
}
render(){
return <Comp></Comp>
}
}
return WrapComp
}
WrapperHello(
class Hello extends React.Component{
render(){
return <h2>hello imooc I love React&Rdux</h2>
}
}
)

React-理解高阶组件的更多相关文章

  1. react.js 高阶组件----很简单的实例理解高阶组件思想

    调试代码之前,我设置了两个缓存 分别是username和content 在控制台console设置两个缓存代码 localStorage.setItem('username','老王')localSt ...

  2. React 之 高阶组件的理解

    1.基本概念 高阶组件是参数为组件,返回值为新组件的函数. 2.举例说明 ① 装饰工厂模式 组件是 react 中的基本单元,组件中通常有一些逻辑(非渲染)需要复用处理.这里我们可以用高阶组件对组件内 ...

  3. 【转】react的高阶组件

    React进阶之高阶组件   前言 本文代码浅显易懂,思想深入实用.此属于react进阶用法,如果你还不了解react,建议从文档开始看起. 我们都知道高阶函数是什么, 高阶组件其实是差不多的用法,只 ...

  4. react之高阶组件(二)

    高阶组件的使用 接上文———— 一.像函数一样直接调用 import React, { Component } from 'react' import A from './A' class C ext ...

  5. react用高阶组件实现路由守卫

    react-router不像vue-router一样有很多钩子函数,可以做路由守卫.想实现路由守卫,可以用高阶组件来实现. @connect(state => ({ isLogin: state ...

  6. react之高阶组件(一)

    当两个或多个组件有相同的地方,可以将相同的部分抽离出来 先创建三个组件A.B.C A.js import React, { Component } from 'react' class A exten ...

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

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

  8. React HOC(高阶组件)

    一.定义 高阶函数:函数接受函数作为输入,或者输出一个函数. 高阶组件:接受React组件作为输入,或是输出一个组件.即hocFactory:: W: React.Component => E: ...

  9. React高阶组件总结

    在多个不同的组件中需要用到相同的功能,这个解决方法,通常有Mixin和高阶组件. Mixin方法例如: //给所有组件添加一个name属性 var defaultMixin = { getDefaul ...

  10. React中的高阶组件,无状态组件,PureComponent

    1. 高阶组件 React中的高阶组件是一个函数,不是一个组件. 函数的入参有一个React组件和一些参数,返回值是一个包装后的React组件.相当于将输入的React组件进行了一些增强.React的 ...

随机推荐

  1. Xcode常用的文件路径

    1.Provisioning Profile文件在哪找? ~/Library/MobileDevice/Provisioning Profiles 2.master 在那找? ~/.cocoapods

  2. C# Partial:分部方法和分部类

    using System; namespace Partial { class Program { static void Main(string[] args) { A a = new A(); } ...

  3. linux 下svn操作

    * 前言: linux下的svn相比于gitlab,配置要求第一点:gitlab需要4G的内存,如果使用swap+内存的替代方案,理论上是可行的,但是实际操作中各种坑:     所以,由于条件限制,使 ...

  4. Oracle EBS when-validate-record 个性化无效果

    在对FORM进行个性化时,针对对应块添加 when-validate-record ,结果做实验的时候无效果. 原因: FORM 中对应的 BLOCK 没有 when-validate-record ...

  5. 简单易懂的程序语言入门小册子(5):基于文本替换的解释器,递归,不动点,fix表达式,letrec表达式

    这个系列有个显著的特点,那就是标题越来越长.忽然发现今天是读书节,读书节多读书. ==下面是没有意义的一段话============================================== ...

  6. c/c++求解图的关键路径 critical path

    c/c++求解图的关键路径 critical path 上图表示一个工程,工程以V1为起始子工程,V9为终止子工程. 由图可以看出,要开工V5工程,必须在完成工程V2和V3后才可以. 完成V2需要a1 ...

  7. python中封装、继承、多态

    又看到这个玩意,顺手写下来 面向对象三大特征: 封装:本质是将事物相关的属性和方法封装在一个类里面,我们调用类创建实例的时候,不用关心类内部的代码细节 继承:子类需要复用父类里面的属性或者方法,当然子 ...

  8. C# -- 使用XmlDocument或XDocument创建xml文件

    使用XmlDocument或XDocument创建xml文件 需引用:System.Xml; System.Xml.Linq; 1.使用XmlDocument创建xml(入门案例) static vo ...

  9. 管理ESXI网络

    一.实验拓扑图: 二.实验目标:部署标准交换机和分布式交换机 三.实验步骤: 标准交换机的配置 1.分别在两台esxi主机中添加6块物理网卡,桥接到vmnet1. 通过宿主机连接到sql-vcente ...

  10. C语言 求两数的最大公约数和最小公倍数

    //作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ #include<stdio.h> //最大公约数 int gys(int x,int ...