vue3中watch监听的应用技巧

在 Vue 3 中,watch 的使用方式与 Vue 2 有所不同,主要是因为 Vue 3 引入了 Composition API,使得状态管理和副作用处理更加灵活和模块化。下面列出了一些 Vue 3 中 watch 监听的应用技巧:

1、监听单一的响应式引用(Ref) 当你有一个 ref 并且想在其值发生变化时执行某些操作,你可以直接使用 watch 函数来监听这个 ref。

   import { ref, watch } from 'vue'

   const count = ref(0)

   watch(count, (newValue, oldValue) => {
     console.log(`Count changed from ${oldValue} to ${newValue}`)
   })

2、监听多个响应式引用 如果你想同时监听多个 ref,可以使用一个箭头函数返回一个对象,其中的键对应 ref 名称,值为 ref 本身。

   const count = ref(0)
   const name = ref('John')

   watch([count, name], ([newCount, newName], [oldCount, oldName]) => {
     console.log(`Count changed from ${oldCount} to ${newCount}`)
     console.log(`Name changed from ${oldName} to ${newName}`)
   }, { deep: true })

3、监听响应式对象(Reactive) 对于整个响应式对象,你可以直接传入该对象并设置 deep 选项为 true。

   import { reactive, watch } from 'vue'

   const state = reactive({ count: 0 })

   watch(state, (newState, oldState) => {
     console.log('State changed')
   }, { deep: true })

4、监听对象的特定属性 如果你只想监听对象中的特定属性,可以使用箭头函数返回一个对象,其中的键是你要监听的属性名。

   const state = reactive({ count: 0, name: 'John' })

   watch(() => ({ count: state.count }), (newVal, oldVal) => {
     console.log(`Count changed from ${oldVal.count} to ${newVal.count}`)
   })

5、使用 watchEffect watchEffect 是 Vue 3 新增的一个功能,它会自动追踪依赖并在依赖更新时运行副作用。它非常适合用于那些不需要显式传入被观察的引用或对象的场景。

   const count = ref(0)

   watchEffect(() => {
     console.log(`Count is now ${count.value}`)
   })

6、立即执行监听 通过设置 immediate 选项为 true,可以在组件挂载后立即执行监听器一次。

   watch(count, (newValue, oldValue) => {
     console.log(`Count changed from ${oldValue} to ${newValue}`)
   }, { immediate: true })

7、清理副作用 watch 函数返回一个函数,这个函数可以用来取消监听。这在组件销毁或者不再需要监听时很有用。

   let stop

   setup() {
     stop = watch(count, (newValue, oldValue) => {
       // ...
     })

     onUnmounted(stop)
   }

这些技巧可以帮助你在 Vue 3 中更有效地使用 watch 功能来响应状态变化。

Vue3,我们可以使用watch函数来监听数据的响应式变化。watch函数的基本用法是将要监听的数据作为第一个参数,副作用函数作为第二个参数,并且可以通过配置对象进行一些额外的设置。例如: watch(data, (newData, oldData) => { // 副作用函数 }, { immediate: true, deep: true }) 在这个例子,data是要监听的数据,(newData, oldData)是副作用函数,它会在数据发生变化时被调用。配置对象{ immediate: true, deep: true }可以设置监听的行为,immediate为true表示在初始化时立即执行一次副作用函数,deep为true表示深度监听,即递归监听对象内部的变化。 另外,Vue3允许同时存在多个watch监听器。你可以分别监听不同的数据,并在副作用函数处理它们的变化。例如: watch(name, (newValue, oldValue) => { console.log("new", newValue, "old", oldValue); }); watch(age, (newValue, oldValue) => { console.log("new", newValue, "old", oldValue); }); 这样,当name或age发生变化时,对应的副作用函数就会被调用,并打印出新旧值。 综上所述,在Vue3,我们可以使用watch函数来监听数据的响应式变化,并通过配置对象进行一些额外的设置。同时,我们也可以同时存在多个watch监听器来监听不同的数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue3基础之watch监听](https://blog.csdn.net/weixin_64740434/article/details/131619855)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [VUE3的watch监听使用](https://blog.csdn.net/moxunjinmu/article/details/123219081)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值