国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

vue-property-decorator用法詳解

2024-07-09 22:42:37
字體:
來源:轉載
供稿:網友

vue-property-decorator

這個組件完全依賴于vue-class-component.它具備以下幾個屬性:

@Component (完全繼承于vue-class-component) @Emit @Inject @Provice @Prop @Watch @Model Mixins (在vue-class-component中定義);

使用

當我們在vue單文件中使用TypeScript時,引入vue-property-decorator之后,script中的標簽就變為這樣:

<script lang="ts">  import {Vue, Component} from 'vue-property-decorator';  @Component({})  export default class "組件名" extends Vue{    ValA: string = "hello world";    ValB: number = 1;  }</script>

等同于

<script lang="es6">  import Vue from 'vue';  export default {    data(){      return {        ValA: 'hello world',        ValB: 1      }    }  }</script>

總結: 對于data里的變量對頂,我們可以直接按ts定義類變量的寫法寫就可以

那么如果是計算屬性呢? 這就要用到getter了.

<script lang="ts">  import {Vue, Component} from 'vue-property-decorator';  @Component({})  export default class "組件名" extends Vue{    get ValA(){      return 1;    }  }</script>

等同于

<script lang="es6">  import Vue from 'vue';  export default {    computed: {      ValA: function() {        return 1;      }    }  }</script>

總結: 對于Vue中的計算屬性,我們只需要將該計算屬性名定義為一個函數,并在函數前加上get關鍵字即可.

原本Vue中的computed里的每個計算屬性都變成了在前綴添加get的函數.

@Emit

關于Vue中的事件的監聽與觸發,Vue提供了兩個函數$emit和$on.那么在vue-property-decorator中如何使用呢?

這就需要用到vue-property-decorator提供的@Emit屬性.

<script lang="ts">  import {Vue, Component, Emit} from 'vue-property-decorator';  @Component({})  export default class "組件名" extends Vue{    mounted(){      this.$on('emit-todo', function(n) {        console.log(n)      })      this.emitTodo('world');    }      @Emit()    emitTodo(n: string){      console.log('hello');    }  }</script>

運行上面的代碼會打印 'hello' 'world', 為什么呢? 讓我們來看看它等同于什么

<script lang="es6">  import Vue from 'vue';  export default {    mounted(){      this.$on('emit-todo', function(n) {        console.log(n)      })      this.emitTodo('world');    },    methods: {      emitTodo(n){        console.log('hello');        this.$emit('emit-todo', n);      }    }  }</script>

可以看到,在@Emit裝飾器的函數會在運行之后觸發等同于其函數名(駝峰式會轉為橫杠式寫法)的事件, 并將其函數傳遞給$emit.
如果我們想觸發特定的事件呢,比如在emitTodo下觸發reset事件:

<script lang="ts">  import {Vue, Component, Emit} from 'vue-property-decorator';  @Component({})  export default class "組件名" extends Vue{    @Emit('reset')    emitTodo(n: string){    }  }</script>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平乡县| 老河口市| 襄汾县| 龙南县| 基隆市| 南华县| 焦作市| 广宁县| 宁河县| 叙永县| 斗六市| 无为县| 百色市| 子长县| 安平县| 迁西县| 盐津县| 和平县| 鄂伦春自治旗| 三穗县| 上蔡县| 林西县| 大邑县| 搜索| 钦州市| 余干县| 古蔺县| 武城县| 监利县| 枣阳市| 江西省| 鹤岗市| 敦化市| 宜兴市| 成安县| 宜君县| 方正县| 新平| 盖州市| 富川| 方正县|