Vuetify 3数据表格:如何同时使用item与expanded-row插槽实现行展开
Vuetify 3 数据表格同时实现自定义项与行展开的解决方法
问题根源:当完全自定义item插槽时,会覆盖Vuetify默认的行结构,包括内置的行展开触发器,导致expanded-row插槽失去触发入口,功能失效。
解决思路:在item插槽中手动添加展开触发元素,同时保留自定义表格项的渲染逻辑,具体实现如下:
<v-data-table :items="yourData" :expanded="expandedRows" @update:expanded="expandedRows = $event" > <!-- 自定义表格行,手动嵌入展开触发器 --> <template v-slot:item="{ item, isExpanded, toggleExpand }"> <tr> <!-- 展开/收起按钮 --> <td> <v-btn icon @click="toggleExpand(item)"> <v-icon>{{ isExpanded ? 'mdi-chevron-down' : 'mdi-chevron-right' }}</v-icon> </v-btn> </td> <!-- 自定义列内容 --> <td>{{ item.title }}</td> <td>{{ item.category }}</td> <td>{{ item.createTime }}</td> </tr> </template> <!-- 展开行内容 --> <template v-slot:expanded-row="{ item }"> <tr> <!-- colspan需与表格总列数(含展开按钮列)一致 --> <td colspan="4"> <div class="pa-4"> <h3>详情信息</h3> <p>{{ item.description }}</p> <p>备注:{{ item.remark }}</p> </div> </td> </tr> </template> </v-data-table>
关键注意事项:
- 从
item插槽参数中解构isExpanded(当前行展开状态)和toggleExpand(触发展开/收起的方法),绑定到自定义按钮上 expanded-row的colspan值必须和表格总列数匹配,否则会出现布局错位- 如果原本配置了
headers数组,需要调整headers包含展开列,或者直接放弃headers配置,完全手动渲染所有列
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

