项目遇到父组件传值给子组件,子组件监听数据变化可以用watch监听数据变化
watch:{
a:{
handler(val) {
console.log(val); // 这里就是父组件传递过来的真实数据
}
}
}
如果要在子组件打印父组件传来的数据必须是在beforeUpdate和updated生命周期才能监听的到,
原因如下:
然后根据父子组件之间的生命周期函数执行的顺序,谈一谈我在项目中遇到的有关问题:
⭐问题一:父组件中的要传递的 props 属性是通过在created生命周期中发生ajax请求回来的一个数据,子组件的前四个生命周期中都无法拿到这个对象?
⭐原因是:父组件的created函数中调用某个方法而方法会去请求接口,而这个请求是属于异步操作,此时会把异步操作放到消息队列中,等到后面的父子生命周期函数等一系列同步任务执行完成后,会执行异步任务,即读取消息队列的任务,执行回调函数(这点可以去了解一下JS的单线程特点)。此时接口才会返回数据,父组件中的变量才能拿到该数据,但是子组件中的 created 、 mounted 这样只会执行一次的生命周期钩子,已经执行了,所以子组件的前4个生命周期是无法拿到父组件调接口拿来的数据的。