• vueDay03——计算属性


    一、一般场景

    当我们需要对某个数据进行简单判断渲染的时候,我们通常会使用如下方法

    1. <div>
    2. nginx当前状态:{{ openNginx == true ? 'true' : 'false'}}
    3. div>

    但是这样就很影响观感,因为渲染出来的只有openNginx的值,而没有后面的表达式

    二、计算属性写法

    这样我们就可以借助计算属性,将其封装成方法表达,代码如下

    1. <div>
    2. nginx当前状态:{{ openNginxValue }}
    3. div>
    1. const openNginxValue = computed(() => {
    2. return openNginx.value == true ? "true" : "false";
    3. })

    两者的表达效果一直,但是后者的代码易读性强许多

    三、函数方法

    但是这样和普通的函数方法有什么区别呢???

    函数方法写法如下

    1. <div>
    2. nginx当前状态:{{ openNginxValue() }}
    3. div>
    1. const openNginxValue = () => {
    2. return openNginx.value == true ? "true" : "false";
    3. }

    区别就是计算属性具有缓存,当下次调用这个值的时候,只要他不被触发响应式的更新,他就会直接返回其数值,而函数每次渲染都会重新计算

    四、计算属性特性

    还有一个特点就是计算属性是可读的,直接修改计算属性的值会报警告

    但是我们也可以通过如下形式来对计算属性进行“赋值”

    1. <button @click="giveComputeValue"> 点击我开启nginxbutton>
    2. <div>
    3. nginx当前状态:{{ openNginxValue }}
    4. div>
    1. const openNginxValue = computed( {
    2. get() {
    3. return openNginx.value == true ? "true" : "false";
    4. },
    5. set(value) {
    6. alert("我被赋值了,但是翻转的是openNginx的值")
    7. openNginx.value = !openNginx.value;
    8. }
    9. })
    1. const giveComputeValue = () => {
    2. openNginxValue.value = "false";
    3. }

    我们点击button调用giveComputeValue箭头函数方法,其对openNginxValue响应式赋值,被计算属性openNginxValue的set方法捕获,从而执行对响应式变量openNginx进行翻转,实现了对计算属性的《表面赋值》

    五、全部代码

    1. <template>
    2. 我是计算属性测试!!
    3. <br>
    4. <button @click="giveComputeValue"> 点击我开启nginx</button>
    5. <div>
    6. nginx当前状态:{{ openNginxValue }}
    7. </div>
    8. </template>
    9. <script lang="ts" setup>
    10. // import { defineComponent } from '@vue/composition-api'
    11. import { computed, ref } from 'vue'
    12. const nums = ref(0);
    13. const openNginx = ref(false);
    14. const open = () => {
    15. openNginx.value = !openNginx.value;
    16. }
    17. const openNginxValue = computed( {
    18. get() {
    19. return openNginx.value == true ? "true" : "false";
    20. },
    21. set(value) {
    22. alert("我被赋值了,但是翻转的是openNginx的值")
    23. openNginx.value = !openNginx.value;
    24. }
    25. })
    26. const giveComputeValue = () => {
    27. openNginxValue.value = "false";
    28. }
    29. // const openNginxValue = () => {
    30. // return openNginx.value == true ? "true" : "false";
    31. // }
    32. // const changeCalc = () => {
    33. // openNginxValue.value = true;
    34. // }
    35. </script>
    36. <style>
    37. </style>

  • 相关阅读:
    C++ 字符串哈希(hush)讲解
    企业内容管理(ECM)软件如何为敏感文档创建安全访问
    人脸匹配——OpenCV
    互联网中常见的随机数+分布式中常见的防止重复处理的方式
    内容创作者抖音直播涨粉变现7个小技巧
    13个Facebook用户统计特征
    递归全排列问题(两种方法 Java实现)
    Spring IoC源码:getBean 详解
    UAS协议说明
    【C++】函数重载 ④ ( 函数指针定义的三种方式 | 直接定义函数指针 | 通过 函数类型 定义 函数指针 | 通过 函数指针类型 定义 函数指针 )
  • 原文地址:https://blog.csdn.net/m0_72678953/article/details/134025011