
探讨 element ui 的 dialog 源码:可见性属性之谜
在 Element UI 的源码中,我们可能注意到 Element Dialog 组件中没有直接定义 visible 属性,但它却可以被使用和传值。这不禁令人疑惑,visible 属性是如何被使用的?
深入源码探究发现,visible 属性实际上是通过一个名为 Popup 的 mixins 混入的。Popup mixins 中定义了 visible 属性的默认值为 false,并提供了相关的处理逻辑。
element-ui/src/utils/popup/index.js 文件中定义了 Popup mixins 的代码如下:
easyDialog没有模板机制,只负责逻辑层的弹出效果,至于内容(消息框、表单、图片等)该如何呈现,easyDialog都不管,内容属于业务层的东西,业务需求是千变万化的,如果逻辑和业务结合很紧密,那么可移植性和可扩展性将大大降低。
export default {
props: {
visible: {
type: Boolean,
default: false
},
},
};而 element-ui/src/component.vue 文件中的 Element Dialog 组件代码如下:
export default {
name: 'ElDialog',
mixins: [Popup, emitter, Migrating],
};通过使用 mixins,Element Dialog 组件继承了 Popup 中定义的 visible 属性及其处理逻辑。这样一来,即使在 Element Dialog 组件的 props 中没有显式定义 visible 属性,它仍然可以使用该属性的默认值和处理逻辑。









