前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue 3 Watch 和 computed

Vue 3 Watch 和 computed

作者头像
公众号---人生代码
发布2020-12-29 15:58:23
1.7K0
发布2020-12-29 15:58:23
举报
文章被收录于专栏:人生代码

computed 与 watch

computed

使用 getter 函数,并为从 getter 返回的值返回一个不变的响应式 ref 对象。

代码语言:javascript
复制
<template>
  <div>
    {{ count }}
  </div>
</template>

<script>
import { ref, computed  } from 'vue'
export default {
  setup() {
    const count = ref(1)
    const plusOne = computed(() => count.value + 1)

    console.log(plusOne.value) // 2

    plusOne.value++ // error
    return {
      count,
      plusOne
    }
  },
}
</script>

或者,它可以使用具有 getset 函数的对象来创建可写的 ref 对象。

代码语言:javascript
复制
<template>
  <div>
    {{ count }}
  </div>
</template>

<script>
import { ref, computed } from 'vue'
export default {
  setup() {
    const count = ref(1)
    const plusOne = computed({
      get: () => count.value + 1,
      set: val => {
        count.value = val - 1
      },
    })
    return {
      count,
      plusOne,
    }
  },
}
</script>

watchEffect

在响应式地跟踪其依赖项时立即运行一个函数,并在更改依赖项时重新运行它。

代码语言:javascript
复制
const count = ref(0)

watchEffect(() => console.log(count.value))
// -> logs 0

setTimeout(() => {
  count.value++
  // -> logs 1
}, 100)

## watch

watch API 与选项式 API this.$watch (以及相应的 watch 选项) 完全等效。watch 需要侦听特定的 data 源,并在单独的回调函数中副作用。默认情况下,它也是惰性的——即,回调是仅在侦听源发生更改时调用。

  • 与 watchEffect 比较,watch 允许我们:
    • 惰性地执行副作用;
    • 更具体地说明应触发侦听器重新运行的状态;
    • 访问侦听状态的先前值和当前值。

#侦听一个单一源

侦听器 data 源可以是返回值的 getter 函数,也可以是 ref:

代码语言:javascript
复制
// 侦听一个getter
const state = reactive({ count: 0 })
watch(
  () => state.count,
  (count, prevCount) => {
    /* ... */
  }
)

// 直接侦听一个ref
const count = ref(0)
watch(count, (count, prevCount) => {
  /* ... */
})
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CryptoCode 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • computed 与 watch
    • computed
      • watchEffect
        • ## watch
        • #侦听一个单一源
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档