关于vue3中watchEffect与watch的疑问
<template>
<input v-model="value" type="text" @input="handleInputChange" />
</template>
setup() {
const value = ref('')
watchEffect(async onInvalidate => {
console.log(value.value); // 初始化也会被监听到
onInvalidate(() => {
console.log('?');
});
});
function handleInputChange() {
let stopWatch: WatchStopHandle = () => {};
if (value.value.length > 5) {
stopWatch = watch(value, (val, preVal) => {
console.log(`输入框老值:${val},新值:${preVal}`);
});
} else {
stopWatch();
}
}
return {
value,
handleInputChange
};
}
代码如上所示,为什么在handleInputChange
函数中else
调用会走到watchEffect
中的onInvalidate
,难道一开始stopWatch
不就是一个空函数吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
https://vue3js.cn/docs/zh/api...
你把
console.log(value.value);
注释掉