美文网首页ts
vue + ts 装饰器的合理使用

vue + ts 装饰器的合理使用

作者: johnnie_wang | 来源:发表于2020-07-03 19:38 被阅读0次

装饰器

什么是 装饰器?

内裤可以用来遮羞,但是到了冬天它没法为我们防风御寒,聪明的人们发明了长裤,有了长裤后宝宝再也不冷了,装饰器就像我们这里说的长裤,在不影响内裤作用的前提下,给我们的身子提供了保暖的功效。 装饰器本质上是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。

vue项目

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

  • @PropSync
  1. 补充.sync 修饰符

    数据双向绑定, 一般使用prop 父组件传值到子组件,子组件不允许修改

    但是使用.sync ,子组件可以对父组件传入的值进行修改 , 并传回给父组件

    实现真正意义上的 数据双向绑定!

   ```
   // 写法
   <text-document v-bind:title.sync="doc.title"></text-document>
   ```
  1. 实例代码

    a.父组件:

  ```
  <match-list v-show="active === 0" :committee_id.sync="committee_id" @next="next" />


   @Component({
      components: {
        MatchList
      }
    })
    export default class extends Mixins(···) {
        private committee_id = '-1' // 赛会id

        ···

    }
    </script>
  ```



    b.子组件:  


  ```
  @PropSync('committee_id', { type: String }) syncedCommitteeId!: string


  /*
   * 这里给传入的值 赋值, 同时父组件的也会改变
   */
  select(e) {
    this.active = e.target.dataset.index
    this.syncedCommitteeId = e.target.dataset.id
  }
  ```
  1. @PropSync原理

    这个装饰器增加了emit , 相当于我们在子组件改变了值, 再通过emit传给父组件

    而我们不用额外的多写代码,就增加了额外功能

       ```
       export default {
           props: {
             name: {
               type: String
             }
           },
           computed: {
             syncedName: {
               get() {
                 return this.name
               },
               set(value) {
                 this.$emit('update:name', value)
               }
             }
           }
         }
       ```
    
  2. 注意点

    @PropSync需要配合父组件的.sync修饰符使用

  • @Watch
  1. 深度监听

        ```
        @Watch(···, { deep: true })
        ```
    
  2. 直接写在某个方法上, 不用特意定义新的方法

      ```
      created() {
        this.handleFilter()
      }

      /**
       * @description 列表过滤方法
       */
      @Watch('formFilter', { deep: true })
      public handleFilter() {
        ···
      }
      ```

相关文章

  • vue + ts 装饰器的合理使用

    装饰器 什么是 装饰器? 内裤可以用来遮羞,但是到了冬天它没法为我们防风御寒,聪明的人们发明了长裤,有了长裤后宝宝...

  • 装饰器实验

    装饰器实验 说明 ts内包含了四个装饰器,类装饰器、属性装饰器、函数装饰器、参数装饰器,本文中测试一下其的使用。 ...

  • 装饰器编写get请求

    说明 本文演示使用装饰器编写get请求的方法 准备工作 编写代码 测试执行ts-node .\index.ts,返...

  • vue中使用TS实现父子组件直接的通信

    vue中使用ts 在vue中使用ts是需要有一定的ts基础的,如果对于ts小白的话还是推荐先看一下ts官网,先了解...

  • vue-property-decorator

    在Vue中使用Typescript,通过vue-property-decorator装饰器库来简化书写。vue-p...

  • vue-class-component 使用说明

    vue-class-component 为了定义带有装饰器风格的Vue组件,如果使用Babel转换,必须使用bab...

  • TS装饰器

    装饰器是一种特殊类型的声明,本质上就是一个方法,可以注入到类、方法、属性、参数上,扩展其功能; 常见的装饰器:类装...

  • TS装饰器

    装饰器是一种特殊类型的声明,可以被附加到类生命、方法、访问符、属性或参数上,可以修改类的行为。使用@express...

  • ts装饰器

    1、装饰器是什么?装饰器是一种特殊类型的声明,他能够附加到类声明、属性、方法、参数上,可以修改类的行为。通俗的讲,...

  • TS装饰器

    一:类的装饰器:是一种与类(class)相关的语法,用来注释或修改类和类方法,装饰器本身是一个函数,装饰器通过@来...

网友评论

    本文标题:vue + ts 装饰器的合理使用

    本文链接:https://www.haomeiwen.com/subject/woreqktx.html