一、一般场景
当我们需要对某个数据进行简单判断渲染的时候,我们通常会使用如下方法
<div>
    nginx当前状态:{{ openNginx == true ? 'true' : 'false'}}
</div>但是这样就很影响观感,因为渲染出来的只有openNginx的值,而没有后面的表达式
二、计算属性写法
这样我们就可以借助计算属性,将其封装成方法表达,代码如下
<div>
     nginx当前状态:{{ openNginxValue }}
</div>
const openNginxValue = computed(() => {
    return openNginx.value == true ? "true" : "false";
})两者的表达效果一直,但是后者的代码易读性强许多
三、函数方法
但是这样和普通的函数方法有什么区别呢???
函数方法写法如下
    <div>
        nginx当前状态:{{ openNginxValue() }}
    </div>const openNginxValue = () => {
    return openNginx.value == true ? "true" : "false";
}区别就是计算属性具有缓存,当下次调用这个值的时候,只要他不被触发响应式的更新,他就会直接返回其数值,而函数每次渲染都会重新计算
四、计算属性特性
还有一个特点就是计算属性是可读的,直接修改计算属性的值会报警告

但是我们也可以通过如下形式来对计算属性进行“赋值”
    <button @click="giveComputeValue"> 点击我开启nginx</button>
    <div>
        nginx当前状态:{{ openNginxValue }}
    </div>const openNginxValue = computed( {
    get() {
        return openNginx.value == true ? "true" : "false";
    },
    set(value) {
        alert("我被赋值了,但是翻转的是openNginx的值")
        openNginx.value = !openNginx.value;
    }
})const giveComputeValue = () => {
    openNginxValue.value = "false";
}我们点击button调用giveComputeValue箭头函数方法,其对openNginxValue响应式赋值,被计算属性openNginxValue的set方法捕获,从而执行对响应式变量openNginx进行翻转,实现了对计算属性的《表面赋值》

五、全部代码
<template>
    我是计算属性测试!!
    <br>
    <button @click="giveComputeValue"> 点击我开启nginx</button>
    <div>
        nginx当前状态:{{ openNginxValue }}
    </div>
</template>
<script lang="ts" setup>
// import { defineComponent } from '@vue/composition-api'
import { computed, ref }  from 'vue'
const nums = ref(0);
const openNginx = ref(false);
const open = () => {
    openNginx.value = !openNginx.value;
}
const openNginxValue = computed( {
    get() {
        return openNginx.value == true ? "true" : "false";
    },
    set(value) {
        alert("我被赋值了,但是翻转的是openNginx的值")
        openNginx.value = !openNginx.value;
    }
})
const giveComputeValue = () => {
    openNginxValue.value = "false";
}
// const openNginxValue = () => {
//     return openNginx.value == true ? "true" : "false";
// }
// const changeCalc = () => {
//     openNginxValue.value = true;
// }
</script>
<style>
</style>



















