问题:使用Vue3中的watch时报错Invalid watch source: undefined A watch source can only be a getter/effect funct

文章讨论了在Vue.js中遇到的Invalidwatchsource错误,指出问题在于使用非函数类型的监听值。作者提供了正确的代码示例,即使用箭头函数返回props值,以及处理对象监听时可能出现的问题

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

问题

在这里插入图片描述
报错如下:

Invalid watch source: undefined A watch source can only be a
getter/effect function, a ref, a reactive object, or an array of these
types. at <Index onVnodeUnmounted=fn ref=Ref<
undefined > key=“/running-attention/safe/picture” > at <KeepAlive
key=1 include= [‘monitor’] >

分析

代码写法:

watch(props.visible, (newVal) => {
    if (newVal) {
        xxxx....
    }
})

一开始以为是不能直接用这种简单数据类型,改成了对象,后面看了官方文档,发现是写错了
监听值要用函数返回 () => props.visible
正确写法:

watch(() => props.visible, (newVal) => {
    if (newVal) {
        xxxx....
    }
})

如果你监听的是一个对象, 如:


```javascript
watch(props.formData, (newVal) => {
	if (newVal) {
	xxxx....
	}
})

控制台不会报错,但是不会进入你的 (newVal) => {}函数中,可能半天都找不到问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

博客zhu虎康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值