react 高阶组件

react 高阶组件:


我的理解就是原来的功能不强,需要加强
这个概念好理解,就比如Java中,对原来类进行
扩充(装饰) 一般采用组合或者继承的方式

而在我们的react (重点是jsx )语法,函数也是组件
那你对函数进行扩充,用函数来包裹一下就行了!


有些时候我们写代码,刚开始不理解,多写几遍就成为定势了!
也就是总这么写的问题
下面我手写个高阶组件函数!

   // v1 传递个组件,返回一个组件(函数形式)
            const Hoc = (Component)=>{

                return newComp;
            }


            //v2 ,里面的函数组件,就是对Component 进行包装
            const Hoc = (Component)=>{
                
                // 实际使用就是newComp 这个函数组件
                const newComp = (props)=>{
                    // 这里原封不动的使用 要包裹的组件
                    <Component {...props}></Component>
                }
                return newComp;
            }

            总结下,Hoc 函数对Component 组件进行扩充,而扩充后的组件实际上是 newComp;
            export default  Hoc(Component);

总之就是一个函数,形参是组件,返回值是新的函数(也是新的组件)

 

高阶组件
高阶组件HOC(Higher-Order Components)是React中重用组件逻辑的高级技术,它不是react的api,而是一种
组件增强模式。高阶组件是一个函数,它返回另外一个组件,产生新的组件可以对被包装组件属性进行包装,也可
以重写部分生命周期

const withKaikeba = (Component) => {
        const NewComponent = (props) => {
    return <Component {...props} name="开课吧高阶组件" />;
    };
        return NewComponent;
};

每次使用我们都需要调用完函数再使用

比如有个Cart 组件 要进行装饰,

我们首先要

const  NewCart = Hoc(Cart);

然后再使用

<NewCart></NewCart>


这样写太麻烦,假如需要多次装饰,那么就需要多次重复以上逻辑

为了解决这个问题,可以对类组件进行装饰(用那个注解方式)

npm install -D @babel/plugin-proposal-decorators

配置我给大家截图:

 

使用就简单了

// 高阶组件函数!
const Hoc = (Component) => {
    const name = "java";
    const newComponent = (props) => {
        return (
            <Component {...props} name={name}></Component>
        );
    }
    // 返回一个函数!函数也是组件!
    return newComponent;
}


// 对这个组件进行高阶组件
@Hoc
class Show extends Component {
    constructor(props) {
        super(props);

    }
    render() {
        return (
            <div>
                show --{this.props.name}--
                <Button type="primary">ok</Button>
            </div>
        );
    }

}

行,多次注解时,

顺序从上往下执行
我以前学习Java放弃了,只学到了一些概念,希望大家不要走我的弯路


版权声明:本文为qq_15009739原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。