欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
computed 与 watch
 
computed
 
使用 getter 函数,并为从 getter 返回的值返回一个不变的响应式 ref 对象。
 
<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>
 
或者,它可以使用具有 get 和 set 函数的对象来创建可写的 ref 对象。
 
<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
 
在响应式地跟踪其依赖项时立即运行一个函数,并在更改依赖项时重新运行它。
 
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:
 
// 侦听一个getter
 
const state = reactive({ count: 0 })
 
watch(
 
  () => state.count,
 
  (count, prevCount) => {
 
    /* ... */
 
  }
 
)
 
// 直接侦听一个ref
 
const count = ref(0)
 
watch(count, (count, prevCount) => {
 
  /* ... */
 
})

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h63411.shtml