美文网首页
React 高级课程之高阶组件

React 高级课程之高阶组件

作者: 北疆小兵 | 来源:发表于2020-02-17 15:52 被阅读0次

高阶函数基本概念

  • 函数可以作为参数传递

例如下面例子,setTimeout方法有2个参数,第一个参数是一个函数

setTimeout(() => {
            console.log('helo');
  }, 100);

  • 函数可以作为返回值输出

下面foo函数的返回值是一个函数,就可以认为foo是以函数作为返回值的高阶函数

function  foo(x) {
        return function() {
            return x;
        }
    }

高阶组件基本概念

  • 高阶组件就是接受一个组件作为参数并返回一个新组件的函数
  • 高阶组件是一个函数,并不是组件
A.js

function A(WappedComponent){
    return class A extends Component {
        render() {
            return (
                <View>
                    <Text style={{color:'red'}}>提示</Text>
                    <WappedComponent />
                </View>
            )
        }
    }    
}
export default A;


B.js
class B extends Component {
    render() {
        return (
            <Text style={{color:'red'}}>这是 B 组件</Text>
         )
    }
}
export default A(B);

C.js
class C extends Component {
    render() {
        return (
            <Text style={{color:'red'}}>这是 C 组件</Text>
         )
    }
}
export default A(C);

A组件是一个函数,通过接收一个参数(这个参数是一个组件),返回一个新的组件

高阶组件实现

编写高阶组件

function d(WrapComponent){
    return class D extends Component {
        render() {
            return (
                <View>
                    <Text> textInComponent </Text>
                    <WrapComponent />
                </View>
            )
        }
    }    
}

export default d;

使用高阶组件

1.higherOrderComponent(WrappedComponent) 普通函数模式
2.@ higherOrderComponent 装饰器模式

如果是使用第2种 装饰器方式,需要做一些配置

  • 在package.json 中配置 eject


    image.png

在组件B上面用一个@ d 符号就可以将B作为参数传递给高级组件d了


@d
class B extends Component {
    render() {
        return (
            <Text style={{color:'red'}}>这是 B 组件</Text>
         )
    }
}

export default B;

高阶组件应用

  • 代理方式的高阶组件

返回的新组件直接集成自React.Component类,新组件扮演的角色传入参数组件的一个代理,在新组件的render函数中,将被包裹的组件渲染出来,除了高阶组件自己要做的工作,其余功能全部转手给了被包裹的组件。

1.操作props
删除age属性(此时otherProps中是没有age属性的)

image.png

2.抽取状态
3.访问ref

高阶组件调用包裹组件的方法

image.png

4.包装组件

  • 继承方式的高阶组件

采用继承关联作为参数的组件和返回的组件,加入传入的组件是WrappedComponent,那么返回的组件直接继承自WrappedComponent

image.png

例如

image.png

继承方式高阶组件应用

  • 操作props

继承方式高阶组件一般用在需要根据 wrappedcomponent的渲染结果来修改props,用起来还是比较复杂,一般用的少,用代理方式高阶组件更加清晰

  • 操作生命周期函数
image.png

高阶组件显示名

  • getDisplayName()
image.png

相关文章

  • React 进阶之高阶组件

    高阶组件 HOC 高阶组件(HOC)是react中的高级技术,用来重用组件逻辑。但高阶组件本身并不是React A...

  • react 笔记

    react 基本概念解析 react 的组件声明周期 react 高阶组件,context, redux 等高级...

  • React 高阶组件

    高阶组件(HOC)是React中用于复用组件逻辑的高级技巧。输入是组件,输出新的组件的过程就是高阶组件。巴拉巴拉 ...

  • 从高阶函数到高阶组件

    介绍 高阶组件(HOC)是 React 中用于复用组件逻辑的一种高级技巧。HOC 自身不是 React API 的...

  • React 学习笔记二 - HOC 高阶组件理解

    官方定义 高阶组件(HOC)是 React 中用于 复用组件逻辑 的一种高级技巧。HOC 自身不是 React A...

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

    什么是 React 高阶组件 React 高阶组件就是以高阶函数的方式包裹需要修饰的 React 组件,并返回处理...

  • 高阶组件简介

    一、定义 高阶组件(HOC)是 React 中用于复用组件逻辑的一种高级技巧。HOC 自身不是 React API...

  • React 高阶组件

    高阶组件是一种组件复用的高级技巧,是基于React的组合特性而形成的一种设计模式。高阶组件(Higher Orde...

  • React高阶组件和组件复用

    高阶组件-HOC (Hight-Order-Components) react中用于复用组件逻辑的一种高级技巧(设...

  • React 高级课程之高阶组件

    高阶函数基本概念 函数可以作为参数传递 例如下面例子,setTimeout方法有2个参数,第一个参数是一个函数 函...

网友评论

      本文标题:React 高级课程之高阶组件

      本文链接:https://www.haomeiwen.com/subject/sesrfhtx.html