四、手把手教你 Vue2+Ts

709 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

Vue2+Ts

盛年不重来

watch监听:在@Component中增加 watch属性 ,其余的和之前vu2中写法一样

image.png

<template>
    <div class="about">
        {{count}}
        <button @click="addCount">addCount</button>
    </div>
</template>

<script lang="ts">
import Vue from 'vue'
import Component from 'vue-class-component'

@Component({
    watch: {
        count: {
            handler: (nv: number, ov: number) => {
                console.log(nv, ov);
            },
            deep: true,
            immediate: true
        }
    }
})
export default class HelloWorld extends Vue {
    count = 0;
    addCount() {
        this.count++;
    }
}
</script>

image.png

一日难再晨

props:在@Component中增加 props ,其余的和之前vu2中写法一样 image.png

<template>
    <div class="about">
        {{name}}
    </div>
</template>

<script lang="ts">
import Vue from 'vue'
import Component from 'vue-class-component'

@Component({
props:{
    name:{
        type:String,
        required:false,
        default:'张三'
    }
}
})
export default class HelloWorld extends Vue {

}
</script>

组件不传递name: image.png 组件传递name:

image.png

及时当勉励

computed:在@Component中增加 computed ,其余的和之前vu2中写法一样

<template>
    <div class="about">
        {{nameComputed}}
        <input v-model="nameComputed">
    </div>
</template>

<script lang="ts">
import Vue from 'vue'
import Component from 'vue-class-component'

@Component({
    computed: {
        nameComputed: {
            get() {
                return this.aname;
            },
            set(name: string) {
                this.aname = name;
            }
        }
    }
})
export default class HelloWorld extends Vue {
    aname = "222";
}
</script>

image.png

岁月不待人

filter在@Component中增加 filter在 ,其余的和之前vu2中写法一样

<template>
    <div class="about">
             <p>{{aname}} ===> {{aname|toUpper}}</p>
             <p>{{count}} ===> {{count|toPercentage}}</p>
    </div>
</template>

<script lang="ts">
import Vue from 'vue'
import Component from 'vue-class-component'

@Component({
    filters: {
        toUpper: function (value:string) {
            return value.toUpperCase();
        },
        toPercentage: function (value:number) {
            return value * 100 + '%';
        },
    }
})
export default class HelloWorld extends Vue {
    aname = "hello ts";
    count = 0.3;
}
</script>

image.png