• Vue3计算属性


    计算属性

    我们在这里定义了一个计算属性 publishedBooksMessagecomputed() 方法期望接收一个 getter 函数,返回值为一个计算属性 ref。和其他一般的 ref 类似,你可以通过 publishedBooksMessage.value 访问计算结果。计算属性 ref 也会在模板中自动解包,因此在模板表达式中引用时无需添加 .value

    Vue 的计算属性会自动追踪响应式依赖。它会检测到 publishedBooksMessage 依赖于 author.books,所以当 author.books 改变时,任何依赖于 publishedBooksMessage 的绑定都会同时更新

    <script setup>
    import { reactive, computed } from 'vue'
    
    const author = reactive({
      books: [
        'Vue 2 - Advanced Guide'
      ]
    })
    
    // 一个计算属性 ref
    const publishedBooksMessage = computed(() => {
      return author.books.length > 0 ? 'Yes' : 'No'
    })
    </script>
    
    <template>
      <span>{{ publishedBooksMessage }}</span>
    </template>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    计算属性缓存 vs 方法

    不同之处在于计算属性值会基于其响应式依赖被缓存。一个计算属性仅会在其响应式依赖更新时才重新计算。这意味着只要 author.books 不改变,无论多少次访问 publishedBooksMessage 都会立即返回先前的计算结果,而不用重复执行 getter 函数。

    可写计算属性

    计算属性默认是只读的。当你尝试修改一个计算属性时,你会收到一个运行时警告。只在某些特殊场景中你可能才需要用到“可写”的属性,你可以通过同时提供 gettersetter 来创建:

    <script setup>
    import { ref, computed } from 'vue'
    
    const firstName = ref('John')
    const lastName = ref('Doe')
    
    const fullName = computed({
      // getter
      get() {
        return firstName.value + ' ' + lastName.value
      },
      // setter
      set(newValue) {
        // 注意:我们这里使用的是解构赋值语法
        [firstName.value, lastName.value] = newValue.split(' ')
      }
    })
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    1. 不要在 getter 中做异步请求或者更改 DOM!
    2. 计算属性的返回值应该被视为只读的,并且永远不应该被更改——应该更新它所依赖的源状态以触发新的计算
  • 相关阅读:
    机器学习知识经验分享之三:基于卷积神经网络的经典目标检测算法
    非关系型数据库
    固定资产管理中净值怎么算
    Quartus Ⅱ调用FIFO IP核方法实现求和(Mega Wizard)
    安装Milvus的可视化工具Attu教程
    动态规划算法(1)
    新库上线 | CnOpenData国际货运代理信息数据
    Flowable 已经执行完毕的流程去哪找?
    Vue2:路由history模式的项目部署后页面刷新404问题处理
    在线图片转文字怎么转?这种方法大家可以学会
  • 原文地址:https://blog.csdn.net/weixin_43960767/article/details/128040697