VUE+ts

先简单的总结一下ts

接口  规范数据类型的  (规范对象函数类等是什么类型)

泛型  有时候数据类型不确定  (通常是因为返回的类型)  需要泛型来对不同的地方返回不同的类型

装饰器  他就是一个函数  用来改变下面的函数类等

@lang  与@lang()  这两种都是装饰器 但是第二种会传参 针对装饰器的不同传递的参数功能也不同 但是确实是真的传参进去了

也就是说 先执行一边装饰器和下面的方法(装饰器下面的方法会作为一个参数 在装饰器中被改造)

@lang 装饰器 可能是这样样子的

function lang(target){}

@lang() 就是这个样子的

function lang(option?:any){

        return function(){}                        return 必须

}

接下来看看vue中是的实际应用 

两款插件 vue-class-component与vue-property-decorator

vue-class-component是vue官方的插件

而vue-property-decorator是社区的人写的插件

区别  vue-property-decorator完全基于vue-class-component但是在他基础之上又增加了

@Prop @Watch@Inject@Emit等等装饰器

所以接收父向子组件传递数据

@Component   改变类  转化为vue的配置项结构 同时也可以在这里引入组件

import aaa from './zujian.vue';

@Component({

  components: {

    aaa,

  },

})

@Prop

@Prop({ default: false, type: Boolean }) radio!: boolean;

子组件向父组件传值

@Emit

abc(){return }

如果Emit 里面没有参数这时候会触发父组件函数名的事件也就是abc  但是如果是驼峰式命名getAbc 事件名会成为get-abc

参数是函数的返回值

@Watch() 参数监听那个变量

执行方法 也有两个参数 newVal 与oldval

<template>
  <div class="hello">
    <input type="text" v-model="attrbution" />
    <input type="text" v-model="nn" />
    <ul @click="danji('dd')">
      <li>你好</li>
    </ul>
    <aaa></aaa>
  </div>
</template>

<script lang="ts">
import { Component, Prop, Vue, Watch } from 'vue-property-decorator';
import axios from 'axios';
import aaa from './zujian.vue';
@Component({
  components: {
    aaa,
  },
})
export default class HelloWorld extends Vue {
  @Prop() private msg!: string;
  private nn: string;
  private attrbution: string[] = ['w', 'y'];
  // private danji(e: any): void {}
  private get name(): string {
    return '小茗';
  }
  constructor() {
    super();
    this.nn = 'dadaq';
  }
  // private set name(d:string){
  //   console.log(111)
  //   console.log(d)
  //   this.name=d
  // }
  @Watch('nn')
  public aa(new1: any, old: any) {
    console.log(new1, old);
    console.log(this.nn);
  }
  private mounted(): void {
    this.attrbution = ['nihao'];
  }
}
</script>

需要注意的是这时候引入组件 有时要加上.vue否则会说找不到module

有时候会说ts文件才可以写private 全删了再重新写一遍(没改什么感觉是vscode 卡住了似的)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值