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

首頁 > 語言 > JavaScript > 正文

詳解vue-property-decorator使用手冊

2024-05-06 15:36:24
字體:
來源:轉載
供稿:網友

一,安裝

npm i -s vue-property-decorator

二,用法

1,@Component(options:ComponentOptions = {})

@Component 裝飾器可以接收一個對象作為參數,可以在對象中聲明 components ,filters,directives 等未提供裝飾器的選項

雖然也可以在 @Component 裝飾器中聲明 computed,watch 等,但并不推薦這么做,因為在訪問 this 時,編譯器會給出錯誤提示

import { Vue, Component } from 'vue-property-decorator'@Component({ filters: { toFixed: (num: number, fix: number = 2) => { return num.toFixed(fix) } }})export default class MyComponent extends Vue { public list: number[] = [0, 1, 2, 3, 4] get evenList() { return this.list.filter((item: number) => item % 2 === 0) }}

2,@Prop(options: (PropOptions | Constructor[] | Constructor) = {})

@Prop 裝飾器接收一個參數,這個參數可以有三種寫法:

Constructor ,例如 String,Number,Boolean 等,指定 prop 的類型; Constructor[] ,指定 prop 的可選類型; PropOptions ,可以使用以下選項: type,default,required,validator 。
import { Vue, Component, Prop } from 'vue-property-decorator'@Componentexport default class MyComponent extends Vue { @Prop(String) propA: string | undefined @Prop([String, Number]) propB!: string | number @Prop({ type: String, default: 'abc' }) propC!: string}

等同于下面的 js 寫法

export default { props: { propA: { type: Number }, propB: { default: 'default value' }, propC: { type: [String, Boolean] } }}

注意:

屬性的ts類型后面需要加上 undefined 類型;或者在屬性名后面加上!,表示 非null 和 非undefined 的斷言,否則編譯器會給出錯誤提示; 指定默認值必須使用上面例子中的寫法,如果直接在屬性名后面賦值,會重寫這個屬性,并且會報錯。

3,@PropSync(propName: string, options: (PropOptions | Constructor[] | Constructor) = {})

@PropSync 裝飾器與 @prop 用法類似,二者的區別在于: @PropSync 裝飾器接收兩個參數: 

propName: string 表示父組件傳遞過來的屬性名; 

options: Constructor | Constructor[] | PropOptions 與 @Prop 的第一個參數一致;

@PropSync 會生成一個新的計算屬性。

import { Vue, Component, PropSync } from 'vue-property-decorator'@Componentexport default class MyComponent extends Vue { @PropSync('propA', { type: String, default: 'abc' }) syncedPropA!: string}

等同于下面的 js 寫法

export default { props: { propA: { type: String, default: 'abc' } }, computed: { syncedPropA: { get() { return this.propA }, set(value) { this.$emit('update:propA', value) } } }}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 连山| 长治县| 平凉市| 曲水县| 招远市| 静海县| 从化市| 嵊泗县| 兴和县| 东山县| 高唐县| 上犹县| 沾化县| 宁蒗| 临夏县| 南阳市| 大石桥市| 塔城市| 清苑县| 普陀区| 普宁市| 比如县| 星座| 石嘴山市| 黄龙县| 申扎县| 孝昌县| 正安县| 资阳市| 蒙阴县| 曲阜市| 南溪县| 五河县| 台安县| 桃园市| 焉耆| 五台县| 湖南省| 曲靖市| 南华县| 利辛县|