父组件向子组件传值
<div class="content">
<Account v-if="paneName == 1" :user="user"/>
</div>
子组件接收值
<el-form ref="form" :model="form" label-width="auto">
<el-form-item label="头像" class="avatarP">
<el-avatar :size="120" :src="form.imgUrl" />
</el-form-item>
<el-form-item label="姓名">
<el-input v-model="form.userName" :placeholder="form.name"/>
</el-form-item>
</el-form>
export default {
props: ['user'],
data() {
return {
activeName: '1',
form: {
imgUrl: this.user.imgUrl,
userName: this.user.loginName,
},
}
},
created() {},
watch: {
user : {
handler (newVal) {
this.form.imgUrl = newVal.imgUrl;
this.form.userName = newVal.loginName;
},
deep: true // 解决问题的关键所在
}
},
如果不用watch监听,那么进入该组件时的默认页(第一页);首次接收到值是不会赋值给data。在watch 中加上deep: true,深度监听则可以解决问题。