装饰器(就是1个函数)用法

(1)先安装插件(浏览器环境支持,打包到浏览器后优雅降级,转为ES5):

     yarn add @babel/plugin-proposal-decorators --save

然后在package.json文件中的babel选项添加plugins字段

"plugins": [
	 ["@babel/plugin-proposal-decorators", { "legacy": true }],
 ]

(2)编辑器中环境支持配置:WebStorm默认支持(不用做配置),VScode需做配置,配置如下:

编辑器高亮(去除波浪线),配置: vscode->设置->搜索设置输入:experimentalDecorators->勾上。

// react项目中的index.js文件中:(是程序的主入口,默认会先执行的.js文件,不用暴露就可以直接执行)

// 定义装饰器(装饰器就是一个函数,是Object.definePropety的语法糖)
// 装饰器接收3个参数,分别为对象、对象的某个属性和描述对象
function readonly(target,prop,desc){
  desc.writable=false; //设置只能为只读!
}
// 装饰器:就是用来装饰变量的,用法:@装饰器名 变量名(类,类变量成员(属性和方法))
class  Dog {
  @readonly dark="wangwang";  // 定义1个实例属性
}

let dog=new Dog();
console.log(dog.dark); //wangwang
dog.dark="miaomiao"; // 浏览器报错(只读的不能修改,报错才正常) Cannot assign to read only property 'dark' of object '#<Dog>'
// console.log(dog.dark); 

猜你喜欢

转载自blog.csdn.net/qq_38969618/article/details/103439619