子组件需设置ref
<template>
<div>
<!-- 子组件 -->
<child-component ref="childRef"></child-component>
</div>
</template>
js代码段,引入子组件,因为data属于函数 所以这里边必须用函数方式监听,另外子组件data内对象赋值需用set方式赋值,否则监听不到
<script>
import childComponent from './childComponent.vue'
export default {
components: {
childComponent
},
mounted(){
this.$nextTick(() => {
// 拿取子组件data
const useData = this.$refs.childRef.$data
// 监听
this.$watch(() => {
return useData
},(val) => {
console.log(val)
},{deep:true})
})
}
}
</script>
注: 子组件内,触发监听条件
data(){
return{
formData:{
age: ''
}
}
},
mounted(){
this.formData.name = '张三' // 不会触发监听
this.$set(this.formData, 'name', '张三') // 会触发监听
this.formData.age = '20' // 会触发监听
}