# 高阶组件

# 1、什么是高阶组件?
  • 高阶组件就是一个 React 组件包裹着另外一个 React 组件
  • 因为要访问它的内部状态,所以要用到继承
  • 高阶组件就是一个函数,它接受另一个组件作为参数,并返回一个新的组件。
  • 当 React 组件被包裹时(warped),高阶组件会返回一个增强的 React 组件。
  • 高阶组件让代码更具有复用性、逻辑性和抽象特性。
# 2、侵入式
  • 利用super传递下去
import React from 'react';
import Loding from '../common/loading';

// 侵入式
// 因为要访问它的内部状态,所以要用到继承,继承他的父级
export default (WrapComponent)=>{
    return class extends WrapComponent{
        render(){
            if(this.state.isLoading){
                return <Loding></Loding>
            }else{
                return super.render()
            }
        }
    }
}
# 3、非侵入式
  • 利用...传递下去

hoc/widthAd.jsx

import React from 'react';

// 非侵入式
// WrapComponent 被包裹的组件
export default (WrapComponent)=>{
    return class extends React.Component{
        render(){
            return <div>
                <div>
                    <p>请下载淘票票</p>
                    <a href="https://dianying.taobao.com/">下载</a>
                </div>
                <WrapComponent {...this.props}/>
            </div>
        }
    }
}

用的时候直接引入这个文件,然后抛出 export default widthAd(Tab)
# 4、为什么要使用高阶组件?
  • 为了代码的复用性,减少代码的冗余

# js继承的几种方式

  1. function (this指向当前的function)
function A(){
    
}
A.protytype.add = ()=>{
    
}
上次更新: 2019/4/23上午10:30:03