前言
项目中碰到了一个关于dialog的使用场景,遇到了一些坑,分享一下
内容
话不多说,直接上代码:
<el-dialog
title="陆运费申请"
:visible.sync="landFreeDialogVisible"
width="50%" destroy-on-close>
<!-- 传入运费-->
<ApplyPayment @changeOpen="landFreeDialogVisible = false"
:need-money="landFreightFree"/>
</el-dialog>
在打开dialog的时候,要给子组件传递一些属性,然后在dialog中渲染子组件这些属性。 但是由于dialog的缓存机制(个人见解),导致dialog只有在第一次打开的时候渲染dom树,其他时候走缓存,这就导致子组件中属性插值无法更新挂载
解决方案 elementui官方也给出了解决方案,那就是使用dialog的destroy-on-close属性,该属性描述为:关闭时销毁 Dialog 中的元素,见名知意了,每次销毁dialog中的元素意味着每一次打开都要重新渲染dom树。但是该方案也有一些问题,比如会降低性能,不过也算是完成需求了。