最近写Vue页面遇到一个问题父子之间的通信传相同的值第一次生效,第二次之后不生效
先看错误的实例:
父页面引入了子组件的页面

在看子页面:
在子页面中使用props接收父级的数据,如果你写的就像我的一样传相同的值watch不会生效,
watch 只会在监听的属性发生变化时触发(不同值),Vue 的设计目标之一是避免不必要的计算和渲染,所以当值没有真正变化时,触发 watcher 没有意义,并可能导致不必要的计算或其他效果,
Vue 是为了性能和避免不必要的渲染。如果在实际应用中遇到问题,建议从业务逻辑的角度考虑如何优化,而不是试图改变 Vue 的默认行为
Vue 3 在这方面的行为并没有改变。
看一下正确的写法只看父组件子组件没有变化:

在每次传递值给子组件之前,先将menuId设置为一个不同的值,然后使$netxtTick,$nextTick 是在下一次“事件循环”执行回调,但它并不保证 DOM 已经挂载,只是保证当前数据更新队列处理完毕,两者缺一不可,在子组件中watch会执行两次一次0 一次是真正的数据,你在子组件中做一下校验就行了啊
网络上有很多说法 要么就是加深度监听 deep: true还有加immediate: true 执行一次回调,太坑了真想骂一句脏话 **********
搞定,收工
Vue父子传同值watch不生效解决方案
472

被折叠的 条评论
为什么被折叠?



