vue3组合式API下使用watch:
let router = useRouter()
// 监听当前路由变化
watch(
() => router.currentRoute.value,
() => {
console.log("路由变化了")
}
);
还有一个注意点:
vue3的watch细节:
watch(
() => props.isOverflowVisible,
(val) => {
console.log("props is:", val)
},
{ immediate: true }
)
这种写法有以下几点需要注意:
我们使用了一个函数 () => props.isOverflowVisible 来返回要监视的值,而不是直接传递 props.isOverflowVisible。这是因为在组合式 API 中,我们需要使用函数来访问 reactive 对象的属性。
第二个参数是回调函数,它会在监视的值变化时被调用。
第三个参数是一个选项对象,我们在这里设置 immediate: true。
使用这种方式,watch 将会在组件挂载时立即执行一次,输出当前的 isOverflowVisible 值,然后在每次 isOverflowVisible 改变时再次执行。
这对于调试很有用,可以让你立即看到初始值,而不需要等待值的第一次变化。它也适用于那些你需要基于 prop 的初始值执行某些操作的场景。
