-
Notifications
You must be signed in to change notification settings - Fork 13
(十)babel处理js非标准语法
阿峰 edited this page May 29, 2023
·
1 revision
现在react主流开发都是函数组件和react-hooks,但有时也会用类组件,可以用装饰器简化代码。
- 新增src/components/Class.tsx组件, 在App.tsx中引入该组件使用
import React, { PureComponent } from "react";
// 装饰器为,组件添加age属性
function addAge(Target: Function) {
Target.prototype.age = 111
}
// 使用装饰圈
@addAge
class Class extends PureComponent {
age?: number
render() {
return (
<h2>我是类组件---{this.age}</h2>
)
}
}
export default Class
- 需要开启一下ts装饰器支持,修改tsconfig.json文件
// tsconfig.json
{
"compilerOptions": {
// ...
// 开启装饰器使用
"experimentalDecorators": true
}
}
上面Class组件代码中使用了装饰器,目前js标准语法是不支持的,现在运行或者打包会报错,不识别装饰器语法,需要借助babel-loader插件,
- 安装依赖
npm i @babel/plugin-proposal-decorators -D
- 在babel.config.js中添加插件
module.exports = {
// ...
"plugins": [
["@babel/plugin-proposal-decorators", { "legacy": true }]
]
}
现在项目就支持装饰器了。