vue父子组件传参后,子组件重新初始化

首先回顾一下父子组件生命周期的执行顺序:

加载渲染过程:

  • 父beforeCreate ---> 父created ---> 父beforeMount ---> 子beforeCreate ---> 子created ---> 子beforeMount ---> 子mounted ---> 父mounted

 子组件更新过程:

  • 父beforeUpdate ---> 子beforeUpdate---> 子updated---> 父updated

父组件更新过程:

  • 父beforeUpdate ---> 父updated

销毁过程:

  • 父beforeDestroy ---> 子beforeDestroy ---> 子destroyed---> 父destroyed

在父组件中点击某条数据显示子组件详情时,由于父组件dom已经挂载完成,子组件dom也完成挂载渲染,所以不会重新渲染刷新。因此在点击详情传入参数后,需要重新初始化子组件

第一种:设置子组件的ref属性,通过$refs.dszx.initData()来初始化子组件

//设置ref属性
<consultEdit :getMainID='rowID' ref="dszx"></consultEdit>
//调用子组件初始化数据的方法
this.$refs.dszx.initData()
//初始化数据
initData(){
   //获取数据并重新赋值
}

第二种:使用父子组件间的通信,通过监听某个值的状态来决定是否初始化子组件

//父组件传参
<consultEdit :getMainID='rowID'></consultEdit>
//子组件接收参数,并监听此值变化,一旦变化则初始化数据
props:["getMainID"],
watch:{
        getMainID(newVal,oldVal){
            this.initData()
        }
},
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值