watch的第一个参数有几种可能
- 一个函数,返回一个值
- 一个 ref
- 一个响应式对象(reactive)
- 或是由以上类型的值组成的数组
当我们要监听整个ref的时候,不要用函数
举例:
❌错误写法:这样函数返回的不是一个值,而是一个ref对象,监听不到更新的!
import { watch } from 'vue'
const name = ref('张三')
watch(()=>name,()=>{
//do something
})
✔正确写法:
import { watch } from 'vue'
const name = ref('张三')
const newName = ref('');
watch(name,(val)=>{
// val 就是监听到的值了,
newName.value = val
})
还有一种写法:参数一写函数返回的是ref的value,但我认为是脱裤子放屁,所以就不推荐了
import { watch } from 'vue'
const name = ref('张三')
watch(()=>name.value,(val)=>{
// 这样也能获取到响应,但是不建议这么写
//do something
})