博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TypeScript+Vue 插件vue-property-decorator的使用总结
阅读量:6516 次
发布时间:2019-06-24

本文共 2500 字,大约阅读时间需要 8 分钟。

  hot3.png

首先 下载

npm install vue-class-component vue-property-decorator --save-dev

一梭子直接干;

其次,咱来说说它们的区别与联系:

vue-property-decorator社区出品;vue-class-component官方出品

vue-class-component提供了Vue、Component等;

vue-property-decorator深度依赖了vue-class-component,拓展出了更多操作符:@Prop、@Emit、@Inject、@Model、@Provide、@Watch;

开发时正常引入vue-property-decorator就行

引入后写vue代码就是如此,

import {Component, Prop, Vue} from 'vue-property-decorator'@Componentexport default class App extends Vue {  name:string = 'Simon Zhang'  // computed  get MyName():string {    return `My name is ${this.name}`  }  // methods  sayHello():void {    alert(`Hello ${this.name}`)  }  mounted() {    this.sayHello();  }}

相当于

export default {  data () {    return {      name: 'Simon Zhang'    }  },  mounted () {    this.sayHello()  },  computed: {    MyName() {      return `My name is ${this.name}`    }  },  methods: {    sayHello() {      alert(`Hello ${this.name}`)    },  }}

大佬都说爽的一批;

然鹅菜鸟我遇到问题一堆,以下做个积累总结:

1、写法问题:引入组件和接收父组件传过来的参数

@Component({  components: {    XXXX  },  props: {    mapFlag: Number  }})

2、获取refs,在其后面加上as HTMLDivElement(不知道是不是这插件引起的,懒得管,直接干就是)

let layoutList:any = this.$refs.layout as HTMLDivElement或let fieldCalculate:any = (this as any).$refs.fieldCalculate

3、ts文件 公用方法导出

const xxx = (value: any, type: string) => {  ...}export { xxx, xxx, xxx, xxx }

4、引入装饰器,使用方式@Watch

import { Component, Prop, Watch, Emit } from 'vue-property-decorator'

5、引用插件。在shims-vue.d.ts 文件中声明,再在组件中引用

declare module 'vuedraggable' {  const vuedraggable: any;  export default vuedraggable;}

6、@Watch使用

// 监听formula 其变化则显示验证公式按钮    @Watch('formula', { deep: true, immediate: true }) formulaWatch (newVal:string, oldVal:string) {      if (newVal !== oldVal) {       this.grammarSuccess = true       this.errMsgFlag = false       this.checkFormulaSuccess = false      }    }

7、计算属性方法写法(跟@watch一样,当成方法写就行;加一个关键字get)

get aTagDatasFcomput () { // computed计算属性, 过滤出visible为true的对象来渲染,因为当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级,这意味着 v-if 将分别重复运行于每个 v-for 循环中      return this.aTagDatasF.filter(item => item.visible)}

8、@Prop的用法

@Prop({      type: Boolean, // 父组件传递给子组件的数据类型      required: false, // 是否必填      default: false // 默认值, 如果传入的是 Object,则要 default: ()=>({}) 参数为函数  }) collapsed !: boolean
@Prop()private datas!: any

感叹号是非null和非undefined的类型断言,所以上面的写法就是对datas这个属性进行非空断言

9、ts设置html的fontSize

获取时:(不加会报错Object is possibly 'null'.  真是一波骚操作)

let docEl = document.documentElement as HTMLDivElement // 加上 as HTMLDivElement

 

 

 

 

 

此文长期慢慢累积

转载于:https://my.oschina.net/lpcysz/blog/2980469

你可能感兴趣的文章
一个快速检测系统CPU负载的小程序
查看>>
java.lang.IllegalArgumentException: No bean specified
查看>>
Wireshark and Tcpdump tips
查看>>
第一课 计算机及操作系统基础知识
查看>>
windows2003单域迁移到2008R2服务器
查看>>
cacti相关资料网站
查看>>
我的友情链接
查看>>
浅析:Android--Fragment的懒加载
查看>>
Linux操作系统目录和Linux常用的文件和目录管理命令
查看>>
DIY:自己动手做一个迷你 Linux 系统(二)
查看>>
猫猫学IOS(三十)UI之Quartz2D画图片画文字
查看>>
ethereumjs/merkle-patricia-tree-2-API
查看>>
go标准库的学习-runtime
查看>>
pytorch Debug —交互式调试工具Pdb (ipdb是增强版的pdb)-1-使用说明
查看>>
NodeJS学习之文件操作
查看>>
AJAX的get和post请求原生编写方法
查看>>
WebSocket 是什么原理?为什么可以实现持久连接
查看>>
Python自学笔记-logging模块详解
查看>>
Head First--设计模式
查看>>
iOS之CAGradientLayer属性简介和使用
查看>>