VUE中父组件传给子组件传值,watch第一次监听不到

简介: VUE中父组件传给子组件传值,watch第一次监听不到


今天编程过程中,遇到一个问题就是vue 父组件传给子组件传值,子组件中watch第一次中监听不到,只有第二个数据变化才能检测到变化。经过各种尝试终于解决了这个问题


问题描述:

父组件中主要代码如下:


<more  :type="curTab"/>

子组件中关键代码如下:


props: {
    type: {
      type: String,
      default: ''
    }
  },
 watch中关键代码
 watch: {
    type: {
      handler (val, old) {
        this.settype()
      }
    }
  },

debugger过程中发现父组件中curTab第一次传值,watch中监听不到。经过一番操作,终于解决这个问题,有两种解决这个问题的方法


方法一:加上参数immediate: true


经过查询官网原因,查到的watch默认最开始的数据不会执行回调,就是说不会进行监听数据的变化。


想要第一就进行回调,就像官网说的那样要加上immediate: true选项即可


方法二:延时解决


因为watch检测不到第一次的变化,那么我们可以让代码进行延时在进行赋值


moreClick () {
      let self = this
      self.curSelectTab = ''
       setTimeout(() => {
         self.curTab = '3'
       }, 50)
    }

是因为最开始old的值就是1

然后由于延时所以把curTab的值设为空字符串 ,然后延时传递过去,相当于有一些默认值 ,然后延时结束再传递过去1或者2 这个值,那么watch就检测到了Tab值的变化。x


结语


🔥一个人可以掌握知识,但只有与他人交流才能形成智慧。

🔥One person can acquire knowledge, but wisdom is formed only in the exchange with others.

🏆 我坚信人与人之间的差距是表面上是财富的差距,本质上是大脑中认知的差距,

我们下期再见。

相关文章
|
9月前
|
JavaScript 前端开发 API
管理数据必备;侦听器watch用法详解,vue2与vue3中watch的变化与差异
一篇文章同时搞定Vue2和Vue3的侦听器,是不是很棒?不要忘了Vue3中多了一个可选项watchEffect噢。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
存储 缓存 JavaScript
在 Vue 中使用 computed 和 watch 时,性能问题探讨
本文探讨了在 Vue.js 中使用 computed 计算属性和 watch 监听器时可能遇到的性能问题,并提供了优化建议,帮助开发者提高应用性能。
|
存储 缓存 JavaScript
Vue 中 computed 和 watch 的差异
Vue 中的 `computed` 和 `watch` 都用于处理数据变化,但使用场景不同。`computed` 用于计算属性,依赖于其他数据自动更新;`watch` 用于监听数据变化,执行异步或复杂操作。
|
JavaScript
Vue 的父组件和子组件生命周期钩子执行顺序
在 Vue 中,父组件和子组件的生命周期钩子执行顺序如下:
|
监控 JavaScript 开发者
在 Vue 中,子组件为何不可以修改父组件传递的 Prop,如果修改了,Vue 是如何监控到属性的修改并给出警告的
在 Vue 中,子组件不能直接修改父组件传递的 Prop,以确保数据流的单向性和可预测性。如果子组件尝试修改 Prop,Vue 会通过响应式系统检测到这一变化,并在控制台发出警告,提示开发者避免这种操作。
|
JavaScript
vue3,使用watch监听props中的数据
【10月更文挑战第3天】
3863 2
|
缓存 JavaScript Serverless
vue中computed计算属性、watch侦听器、methods方法的区别以及用法
vue中computed计算属性、watch侦听器、methods方法的区别以及用法
703 0
|
3月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
336 2
|
2月前
|
缓存 JavaScript
vue中的keep-alive问题(2)
vue中的keep-alive问题(2)
316 137

热门文章

最新文章