如何解决自定义弹窗 visible prop 控制可见性失效的问题?
如何控制自定义弹窗的可见性?
您在使用 dialog 组件时遇到了一个问题,即通过 visible prop 控制可见性。您在使用 v-if="visibleMe" 方式打开和关闭弹窗,但在关闭时将 visibleMe 设置为 false 不会触发监听 visible 的 watch。
解决方法是仅修改 dialog 组件的代码,具体如下:
修改后的 dialog 组件代码:
<template> <div v-if="visibleMe"> <!-- 内容 --> </div> </template> <script> export default { props: { visible: Boolean, }, data() { return { visibleMe: this.visible, // 初始化 visibleMe 与 visible 相同 }; }, watch: { visible(newVal) { this.visibleMe = newVal; }, }, methods: { closeDialog() { this.visibleMe = false; this.$emit('update:visible', false); // 手动触发 visible prop 的更新 }, }, }; </script>
修改后的工作原理:
- 在构造函数中,将 visible 复制到 visibleMe 进行初始化。
- 在 closeDialog 方法中,我们手动触发 visible prop 的更新,这是必需的,因为 visibleMe 的更改不会触发 watch。
以上就是如何解决自定义弹窗 visible prop 控制可见性失效的问题?的详细内容,更多请关注其它相关文章!