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.

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

我们下期再见。

相关文章
|
4天前
|
缓存 监控 JavaScript
探讨优化Vue应用性能和加载速度的策略
【5月更文挑战第17天】本文探讨了优化Vue应用性能和加载速度的策略:1) 精简代码和组件拆分以减少冗余;2) 使用计算属性和侦听器、懒加载、预加载和预获取优化路由;3) 数据懒加载和防抖节流处理高频事件;4) 图片压缩和选择合适格式,使用CDN加速资源加载;5) 利用浏览器缓存和组件缓存提高效率;6) 使用Vue Devtools和性能分析工具监控及调试。通过这些方法,可提升用户在复杂应用中的体验。
15 0
|
4天前
|
JavaScript 前端开发
vue(1),小白看完都会了
vue(1),小白看完都会了
|
3天前
|
JavaScript 开发工具 git
Vue 入门系列:.env 环境变量
Vue 入门系列:.env 环境变量
10 1
|
4天前
|
JavaScript 前端开发 定位技术
Vue使用地图以及实现轨迹回放 附完整代码
Vue使用地图以及实现轨迹回放 附完整代码
Vue使用地图以及实现轨迹回放 附完整代码
|
4天前
|
JavaScript
Vue中避免滥用this去读取data中数据
Vue中避免滥用this去读取data中数据
|
4天前
|
JavaScript
vue中使用pinia及持久化
vue中使用pinia及持久化
8 0
|
4天前
|
JavaScript 前端开发 UED
Vue class和style绑定:动态美化你的组件
Vue class和style绑定:动态美化你的组件
|
4天前
|
JavaScript 前端开发 API
Vue 监听器:让你的应用实时响应变化
Vue 监听器:让你的应用实时响应变化
|
4天前
|
JavaScript
vue封装svg
vue封装svg
10 0
|
4天前
|
JavaScript
vue封装面包屑组件
vue封装面包屑组件
8 0