2025年VUE3中watch和watchEffect的用法

VUE3中watch和watchEffect的用法watch 和 watchEffect 都是监听器 但在写法和使用上有所区别 watch 在监听 ref 类型时和监听 reactive 类型时 watch 函数的写发有所不一样 watch 在监听 ref 类型时 lt script gt import ref watch from vue export

大家好,我是讯享网,很高兴认识大家。

watch和watchEffect都是监听器,但在写法和使用上有所区别。

<script> import { 
   ref, watch} from 'vue' export default { 
    setup() { 
    const state = ref(0) watch(state, (newValue, oldValue) => { 
    console.log(`原值为${ 
     oldValue}`) console.log(`新值为${ 
     newValue}`) /* 1秒后打印结果: 原值为0 新值为1 */ }) // 1秒后将state值+1 setTimeout(() => { 
    state.value ++ }, 1000) } } </script> 

讯享网

watch在监听 reactive类型时:


讯享网

讯享网<script> import { 
   reactive, watch} from 'vue' export default { 
    setup() { 
    const state = reactive({ 
   count: 0}) watch(() => state.count, (newValue, oldValue) => { 
    console.log(`原值为${ 
     oldValue}`) console.log(`新值为${ 
     newValue}`) /* 1秒后打印结果: 原值为0 新值为1 */ }) // 1秒后将state.count的值+1 setTimeout(() => { 
    state.count ++ }, 1000) } } </script> 

watchEffect 它与 watch 的区别主要有以下几点:

  1. 不需要手动传入依赖
  2. 每次初始化时会执行一次回调函数来自动获取依赖
  3. 无法获取到原值,只能得到变化后的值
<script> import { 
   reactive, watchEffect} from 'vue' export default { 
    setup() { 
    const state = reactive({ 
    count: 0, name: 'zs' }) watchEffect(() => { 
    console.log(state.count) console.log(state.name) /* 初始化时打印: 0 zs 1秒后打印: 1 ls */ }) setTimeout(() => { 
    state.count ++ state.name = 'ls' }, 1000) } } </script> 
小讯
上一篇 2025-02-19 19:50
下一篇 2025-01-18 10:19

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/53236.html