react高阶组件、链式组件嵌套、装饰器

高阶组件

定义:
接收一个组件 返回一个新组件
运用场景:
扩展公用组件 可对公用组件进行扩展
示例:
在这里插入图片描述

高阶链式组件

定义:
组件之间的多层嵌套

沿用上面一个例子

const NewHanbin = withHanbin(hanbin)

这只是一层嵌套 还可能多层嵌套

const NewHanbin = withHanbin(withHanbin(hanbin))

嵌套层数多了以后显得累赘,此时建议使用装饰器:
配置使用:

  1. 进行安装
 cnpm install --save-dev babel-plugin-transform-decorators-legacy
  1. 在config-override.js中进行配置
    (针对于安装了react-app-rewired 可查看上一篇文章https://blog.csdn.net/qq_40593656/article/details/103974981
    在这里插入图片描述
const { injectBabelPlugin } = require('react-app-rewired')

module.exports = function override (config, env) {
  config = injectBabelPlugin(
    ['@babel/plugin-proposal-decorators', { legacy: true }],
    config
  )
  return config
}
  1. 修改嵌套代码
    说明:
    将外层嵌套的函数放在上面
    最里面最底层的组件放在下面
    然后用装饰器
    从最外层往里层写 写在最里层的组件上面
就比如
const NewHanbin = withHanbin(hanbin)
就相当于
@withHanbin
class Hanbin extends Component {
  render () {
    return (
      <div>
        {this.props.stage}-{this.props.name}
      </div>
    )
  }
}

在这里插入图片描述
但是写在输出的组件里 从 变成
在这里插入图片描述
在这里插入图片描述
注意:
用装饰器装饰的组件必须是个class 并且不能写有export default

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值