JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

Vue3开发极简入门(4):计算属性(vue3.0 计算属性)

wys521 2025-03-30 22:19:04 精选教程 5 ℃ 0 评论

计算属性(computed property)

HTML页面上的类似{{userName}}这样的,就是模板语法,这里面除了显示某个字段以外,也可以使用JavaScript表达式,例如:

结果:{{ eduBg < 99 edubg> 0 ? "通过":"未通过" }}

但是Vue是不建议在模板语法中写太多逻辑的,后期维护是问题。

采用计算属性来处理复杂逻辑是Vue推荐的。


<script lang='ts' setup name='Applicant'>
import { ref, computed } from 'vue';
let eduBgs = [{ value: 0, text: "请选择" }, { value: 1, text: "博士" }, { value: 2, text: "硕士" }, { value: 3, text: "本科" }, { value: 99, text: "大专" }]

let userName = ref("");
let eduBg = ref(0);

//计算属性
let canSubmit = computed(() => {
    return checkCanSubmit()
})

function checkCanSubmit() {
    return eduBg.value > 0 && userName.value.length > 0
}

function submit() {
    let eduBgText = eduBgs.find(item => item.value === eduBg.value)?.text
    alert(userName.value + " 先生/女士,学历:" + eduBgText + " 已提交")
}
</script>

canSubmit就是计算属性。当其依赖的userName、eduBg发生改变时,canSubmit也会重新计算并更新。

其实计算属性,逻辑也可以写在function中,模板直接调用即可,也能达到相同的效果。

但是相比计算属性,直接用方法是没有缓存的。

假设页面有三处用到canSubmit,如果用function,会计算3次,如果用计算属性,只需1次。

可修改的计算属性

按照上面的写法,如果我们想直接修改计算属性,例如:

canSubmit.value=true

是不行的,会报此属性是只读的。可读可写的写法:



// 计算属性 可读可写
let canSubmit = computed({
    get() {
        return checkCanSubmit()
    },
    set(newVal) {
        userName.value = "佚名"
        eduBg.value = 99
    }
})

function forceSubmit() {
    canSubmit.value = true
}

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表