Vuetify的v-dialog插槽中{on, attrs}的含义及绑定v-btn的逻辑是什么?
语法本质及运行逻辑
1. { on, attrs }的含义
这是ES6对象解构语法和Vue作用域插槽特性的结合使用:
v-dialog的activator插槽属于作用域插槽,是Vuetify在封装组件时预先设计的,组件内部会向插槽传递一个包含多个控制属性的对象,{ on, attrs }就是直接从这个对象中解构提取出on和attrs两个字段,省略了先接收完整插槽参数再取属性的冗余写法。attrs是v-dialog内置的、需要挂载到触发元素上的属性集合,包含无障碍属性、弹窗关联的自定义prop等内容。on是v-dialog内置的、需要挂载到触发元素上的事件监听集合,核心包含点击触发弹窗开关、键盘操作触发等事件处理函数。
2. 绑定到v-btn的生效逻辑
这是Vue提供的属性/事件批量绑定语法:
v-bind支持直接传入属性对象,会自动遍历对象的键值对,把每一项作为独立属性/prop绑定到组件上。v-bind="attrs"就等价于手动把attrs里所有属性一个个写:属性名="属性值"绑到v-btn上。v-on支持直接传入事件对象,会自动遍历对象的键值对,把每一项作为独立事件监听绑定到组件上。v-on="on"就等价于手动把on里所有事件一个个写@事件名="处理函数"绑到v-btn上。
这样设计的目的是把弹窗和触发元素的关联逻辑封装在v-dialog内部,不需要开发者手动写点击开关弹窗、绑定无障碍属性的逻辑,减少重复代码。
内容的提问来源于stack exchange,提问作者Philipp Chapkovski
相关产品推荐
相关产品推荐

