React高阶组件HOC以及cra简单使用

React高阶组件简单说就是用一个函数包着一个react组件,让这些被包着的react组件可以共用这个函数的方法属性。而cra就是个@修饰器,以简化export default a(b(c(d)))这种同时有多个高阶组件的调用,常用:router的@withRouter、react-redux的@connect();

//Hoc.js
import React, {Component} from "react";

const withCopyRight = (MyComponent) => {
   return  class withCopyRight extends Component {
        render() {
			console.log(this.props)//指向子组件的props
            return (
                <>
                    <MyComponent {...this.props}/>//props解构
                    <div>&copy;winson</div>//为每个组件添加版权信息
                </>
            )
        }
    }
}
export default withCopyRight;
//App.js
import React, {Component} from 'react';
import Hoc from './Hoc'
import MyButton from "./MyButton";

//@Hoc 装饰器写法
//最后export default App 等价下面的 export default Hoc(App);
class App extends Component {
    render() {
        return (
            <div className="App">
                <MyButton mes={'this is showing component'}/>//父组件调用以及传参
            </div>
        );
    }
}

export default Hoc(App);
//MyButton.js
import React, {Component} from 'react';
import Hoc from './Hoc'
//@Hoc 装饰器写法
//最后export default MyButton 等价下面的 export default Hoc(MyButton);
class MyButton extends Component {
    render() {
        return (
            <div>
                {this.props.mes}//接收props
            </div>
        );
    }
}

export default Hoc(MyButton);

这样每一个组件都可以有HOC.jsx的版权信息@copyright winson。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值