场景:在父组件中表单提交数据,子组件中更新显示列表,子组件已经写完,再去添加prop略麻烦,尝试过location.reload()体验太差
模板部分
<recordDetail v-if="forceReload"></recordDetail>
data部分
forceReload:true
methods部分(表单验证成功后,先让组件消失,ajax返回成功后再让其显示)
this.$validator.validateAll().then((msg)=>{
if(msg){
this.forceReload=false; //先强制组件消失
this.$ajax.get('/rest/admin/cases/create')
.then((res)=>{
this.forceReload=true; //强制组件再次渲染
})
.catch(function (error){});
}else{
this.$message({
message: '填写不完整!',
type: 'warning'
});
}
});
改进方法
this.forceReload = false this.$nextTick(() => (this.forceReload = true))
新的方法:组件设置key,动态更新即可
<editor :key="key"></editor> <el-button type="primary" @click="refresh">刷新组件</el-button> this.key = Math.floor(Math.random()*10000000)
