react 装饰器
使用装饰器定义
装饰器是一种函数,写成 @函数名。它可以放在类和类方法的定义前面。react脚手架创建的项目默认是不支持装饰器,需要手动安装相关模块和添加配置文件。
- 安装相关模块
npm i -D customize-cra react-app-rewired
- 修改package.json文件中scripts命令
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-scripts test",
"eject": "react-scripts eject"
}
- 添加config-overrides.js配置文件
此文件可以理解为就是webpack.config.js的扩展文件
const path = require('path')
const {disableEsLint, addDecoratorsLegacy, override} = require('customize-cra')
const customize = () => (config, env) => {
config.resolve.alias['@'] = path.join(__dirname, 'src')
return config
}
module.exports = override(
disableEsLint(),
addDecoratorsLegacy(),
customize()
)
fn.js文件
import React, { Component } from 'react'
// 高阶组件 == 装饰器有参数写法
// 使用装饰器中有传数据,则需要在回调用再次返回一个函数
/* export default (...args) => {
console.log(args);
return Cmp => {
return class extends Component {
render() {
return <Cmp>几个参数</Cmp>
}
}
}
} */
/* export default (...args) => Cmp => {
return class extends Component {
render() {
return <Cmp>{args.join('####')}</Cmp>
}
}
} */
/* export default (...args) => Cmp => {
return function () {
return <Cmp>{args.join('####')}</Cmp>
}
} */
// 高阶组件
/* export default (...args) => Cmp => () => {
return <Cmp>{args.join('####')}</Cmp>
} */
export default (...args) => Cmp => () => <Cmp>{args.join('####')}</Cmp>
import React, { Component } from 'react';
import withCmp from '../hoc/withCmp'
import fn from '../hoc/fn'
// 它就是一个函数 装饰器(它是类配套) decorator
@withCmp
// 高阶组件传参数
@fn('aaa','bbb')
class Home extends Component {
render() {
return (
<div>
{this.props.title}
我是一个组件
<hr />
{this.props.children}
</div>
);
}
}
export default Home;


使用装饰器

react 装饰器的更多相关文章
- react mobx 装饰器语法配置
1.弹出项目配置 npm run eject 此处注意,若弹出项目配置失败,请先执行以下两行代码(我的项目执行上一句都会报错,所以都会执行) 1.git add . 2.git commit -m & ...
- ES 6 装饰器与 React 高阶组件
关于 Decorator 到底是 ES 6 引入的还是 ES 7 引入的我也不是很明白了,两种说法都有,这种问题懒得纠结了--在用的时候发现这个东西很好用,平常用处可能不大,但是结合 React 就很 ...
- 在react中用装饰器来装饰connect
假设我们在react中有如下header组件: import React, { PureComponent } from 'react'; import { connect } from 'react ...
- React支持装饰器
在用mobx时用到了装饰器,无奈环境不支持装饰器,搜索了半天,网上教程乱七八糟,最后想到了babel官网上肯定有,一搜果然有,安装教程 见Babel官网. 最快捷的教程是官网文档
- 【react】---react中使用装饰器
一.creact-react-app中使用装饰器 运行 npm run eject 可以让由create-react-app创建的项目的配置项暴露出来 此时,项目中多了一个config文件,并且各个配 ...
- JS 装饰器解析
随着 ES6 和 TypeScript 中类的引入,在某些场景需要在不改变原有类和类属性的基础上扩展些功能,这也是装饰器出现的原因. 装饰器简介 作为一种可以动态增删功能模块的模式(比如 redux ...
- Javascript 装饰器极速指南
pablo.png Decorators 是ES7中添加的JavaScript新特性.熟悉Typescript的同学应该更早的接触到这个特性,TypeScript早些时候已经支持Decorators的 ...
- ES6 系列之我们来聊聊装饰器
Decorator 装饰器主要用于: 装饰类 装饰方法或属性 装饰类 @annotation class MyClass { } function annotation(target) { targe ...
- MobX基础 ----- 类的静态属性和装饰器
当我们使用MobX的时候,首先要声明一个store, 用来保存状态,它的最基本的语法 如下: class Todo { @observable title = ""; @obser ...
- Typescript中的装饰器原理
Typescript中的装饰器原理 1.小原理 因为react中的高阶组件本质上是个高阶函数的调用, 所以高阶组件的使用,我们既可以使用函数式方法调用,也可以使用装饰器. 也就是说,装饰器的本质就是一 ...
随机推荐
- 【Oracle】对一个已经拥有重复数据的表的列设置唯一性约束
对一个已经拥有重复数据的表的列设置唯一性约束 在这种情况下创建唯一性约束,可以发现会报错,通常为由于存在重复的键值,无法生效唯一性约束 最简单的方法,就是删除重复的记录,这样就可以按照正常流程,创建唯 ...
- 力扣442(java)-数组中重复的数据(中等)
题目: 给你一个长度为 n 的整数数组 nums ,其中 nums 的所有整数都在范围 [1, n] 内,且每个整数出现 一次 或 两次 .请你找出所有出现 两次 的整数,并以数组形式返回. 你必须设 ...
- 转载 | 如何把 thinkphp5 的项目迁移到阿里云函数计算来应对流量洪峰?
简介: 函数计算评测局的优秀征文! 如何把thinkphp5的项目迁移到阿里云函数计算来应对流量洪峰? 1. 为什么要迁移到阿里云函数? 我的项目是一个节日礼品领取项目,过节的时候会有短时间的流量洪峰 ...
- 硬之城携手阿里云 Serverless 应用引擎(SAE)打造低代码平台
简介: 简化用云的成本,把复杂留给自己,简单留给用户. 作者 | 陈泽涛(硬之城产品总监)& 洛浩(阿里云云原生高级架构师) 硬之城成立于 2015 年,是一家以电子元器件 BOM 整体供应为 ...
- 阿里巴巴大规模应用Flink的踩坑经验:如何大幅降低 HDFS 压力?
众所周知 Flink 是当前广泛使用的计算引擎,Flink 使用 checkpoint 机制进行容错处理[1],Flink 的 checkpoint 会将状态快照备份到分布式存储系统,供后续恢复使用. ...
- 阿里云视觉智能开放平台正式上线,阿里集团核心视觉AI能力对外开放
1月底,阿里云正式推出以计算机视觉AI能力为核心的视觉智能开放平台(vision.aliyun.com),平台目前已上线8大类目,超过50多种视觉AI能力,面向人脸识别,文字识别,商品理解,内容安全, ...
- 10种编程语言实现Y组合子
简介: Y组合子是Lambda演算的一部分,也是函数式编程的理论基础.它是一种方法/技巧,在没有赋值语句的前提下定义递归的匿名函数,即仅仅通过Lambda表达式这个最基本的"原子" ...
- 技术实践第二期|Flutter异常捕获
简介:应用性能稳定是良好用户体验中非常关键的一环,为了更好保障应用性能稳定,异常捕获在保证线上产品稳定中扮演着至关重要的角色.我们团队在推出了U-APM移动应用性能监控的产品后,帮助开发者定位并解决 ...
- 2019-11-29-WPF-Process.Start-出现-Win32Exception-异常
title author date CreateTime categories WPF Process.Start 出现 Win32Exception 异常 lindexi 2019-11-29 10 ...
- 【python爬虫案例】爬取微博任意搜索关键词的结果,以“唐山打人”为例
目录 一.爬取目标 二.展示爬取结果 三.讲解代码 四.同步视频 4.1 演示视频 4.2 讲解视频 五.附:完整源码 一.爬取目标 大家好,我是马哥. 今天分享一期python爬虫案例,爬取目标是新 ...