react装饰器

阅读: 评论:0

react装饰器

react装饰器

安装相关依赖

@hoc//@表示它是一个装饰器函数类似于*hoc表示一个生成器函数

cnpm i   @babel/plugin-proposal-decorators//支持装饰器语法
cnpm i             react-app-rewired//这个插件可以让不用通过yarn eject  弹射配置文件cnpm i             customize-cra//为了使用装饰器 

项目的根目录下建立一个 config-overrides.js

   const { override,addDecoratorsLegacy } = require('customize-cra')ports = override(addDecoratorsLegacy());

改package.json

scripts:{
“start”: “react-app-rewired start”,
“build”: “react-app-rewired build”,
“test”: “react-app-rewired test”,
}

./Hoc/index.js

import React from 'react'export default (Com)=> {return class extends React.Component {render(){return  <div>版权<Com {...this.props} /></div> }}
}

./conponent/one/index.js

import React, { Component } from 'react'
import Hoc from '../hoc'
@Hocclass One extends Component {render() {return (<div>one</div>)}
}
export default One

这样每一个用Hoc 装饰器的组件都会带有版权
但是这样的使用不能给装饰器传参,如果需要传参那么使用下面的方法:
Hoc装饰器配置

import React from 'react'
//必须采用函数柯里化
export default (p)=> (Com)=> {return class extends React.Component {render(){return  <div>版权{p}<Com {...this.props} /></div> }}
}

装饰器应用

import React, { Component } from 'react'
import Hoc from '../hoc'
@Hoc("abc")class One extends Component {render() {return (<div>one</div>)}
}
export default One

本文发布于:2024-01-30 22:07:27,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170662365023163.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:react
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23