Vue3的watch哪些事儿
watch()
侦听一个或多个响应式数据源,并在数据源变化时调用所给的回调函数。【人话:敌不动我不动,敌动我动】
一般情况基本数据使用ref,引用数据使用reactive,当然这也不绝对
三个入参
第一个参数:被侦听的目标
- ref
- reactive
- getter函数
- ...
第二个参数:回调函数 (newVal,oldVal ,onCleanup)=>{}
- newVal 新值,oldVal 旧值
- onCleanup 清理副作用 【人话:清除函数体里面什么定时器,绑定的事件...】
第三个参数:配置项
-
immediate?: boolean // 默认:false, 是否进入组件就加载一下
-
deep?: boolean // 默认:false,深度监听,
-
flush:调整回调函数的刷新时机。post | sync |pre 默认
- post 侦听器回调会在父组件以及所属组件的 DOM 更新之后调用
- sync 侦听器回调会在Vue 进行任何更新之前触发
- pre 侦听器回调会在父组件更新 (如有) 之后、所属组件的 DOM 更新之前被调用
-
onTrack / onTrigger:调试侦听器的依赖。参考调试侦听器。
-
once:回调函数只会运行一次。侦听器将在回调函数首次运行后自动停止。
侦听ref对象
▼text复制代码let state = ref("hello world") //注意下面两种写法的区别 watch(state,(newVal)=>{}) watch(()=>state.value,(newVal)=>{})
侦听reactive响应式数据
▼text复制代码let state = reactive({name:"jucky"}) watch(state,(newVal)=>{}) //自动开启深度监听 watch(()=>state.name,(newVal)=>{}) watch(()=>state,(newVal)=>{},{deep:true}) //需要deep配合
项目中遇到的
▼text复制代码let a = ref(1) let b = ref(2) a = b watch(a,(newVal)=>{}) //有效 let c = ref(3) let d = ref(4) watch(c,(newVal)=>{}) //无效, c = d
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
