vue-property-decorator vue框架typescript装饰器的使用

vue-property-decorator vue框架typescript装饰器的使用

vue-property-decorator
安装:

npm i -S vue-property-decorator

这个组件完全依赖于vue-class-component.它具备以下几个属性:

  • @Component (完全继承于vue-class-component)
  • @Prop:父子组件之间值的传递
  • @Emit:子组件向父组件传递
  • @Model:双向绑定
  • @Watch:观察的表达式变动
  • @Provice:在组件嵌套层级过深时。父组件不便于向子组件传递数据。就把数据通过Provide传递下去。
  • @Inject:然后子组件通过Inject来获取
  • Mixins (在vue-class-component中定义);

建议项目中只引用vue-property-decorator就可以了,避免@Component从vue-class-component和vue-property-decorator两个中随意引用。

  1. data值的声明
    在这里插入图片描述
    在这里 public 声明的是公有属性, private 声明的是私有属性,私有属性要带 下划线
    蓝色框里的内容是声明组件,在每个组件创建时都要带上, Components 中的写法如下
    在这里插入图片描述
    上面是普通写法,下面的是懒加载写法

  2. @Prop 父组件传值给子组件

父组件使用 v-bind 传递与js版本一样,在父组件接受是使用修饰器
@Prop({type:‘类型’})
readonly:传递的参数名称!:类型
一定要写全,不然后报错,也可以写个 接口 约束 类型
在这里插入图片描述

  1. @Emit 子组件给父组件传值
    在这里插入图片描述
    @Emit(‘传给父组件的值’)
    callback
    父组件接收与 js 版本一致

  2. @Provide @Inject 混入
    在这里插入图片描述这个没什么说的, @Provide 声明一个值 , 在其他地方用 @Inject 接收

  3. @Watch 监听函数
    在这里插入图片描述
    @Watch(‘监听的值’,{深度监听})
    callback 回调函数

  4. 钩子函数的声明 与js基本一致

Ts                   -> Js
public create() {}   -> create() {}
public mounted() {}  ->  mounted() {}
eg:
private _changeMsg() {} ->  methods: {
_changeMsg() {}
}
eg:
private get _changeValue() {} -> computed: {
_changeValue() {}
}
public destory() {}      -> destory() {}
  1. @State vuex中state的值

在这里插入图片描述
@State(state => state数据里的参数) 页面展示的值
!!!!!! 注意vuex的数据都要在钩子函数里 调用 !!!!!!!!!!!!!!

  1. @Mutation vuex中的mutation
    在这里插入图片描述
    使用与 @State 一致
    !!!!!!!!!!!!!需要注意的是要写一个接口 将state里面的数据类型写进去,如果直接用
    state编辑器会报错 , 当然声明any类型也是可以的, 但是用了Ts还是尽量不要用any吧

  2. @Model:双向数据绑定 (组件之间,checkbox)

<template lang=”ts”> 
input(type="checkbox" :checked="checked" @change="change")
</template> 

import{Vue,Component,Model,Emit}from'vue-property-decorator';
@Component
export default class YourComponent extends Vue{ 
@Model('change',{ 
type:Boolean
 }) 
checked!:boolean; 
@Emit('change') 
change(e:MouseEvent){} 
}
  1. @Action vuex 中的action
    在这里插入图片描述
    @Action(‘action里的方法名’) 页面展示的方法
    !!!!!!!! 由于异步,需要加async await 不然会一直处在padding状态,
    使用promise也是可以的 !!!!!!!!!!!!!!!

至于 vue.config.js 网上很多方法,有兴趣的可以去找下,在这里贴下自己的
使用时一定引入修饰器
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值