Vuetify v-select使用item插槽仅渲染57条数据问题咨询
问题原因与解决方法
这个问题大概率是Vuetify默认开启的虚拟滚动机制导致的:当v-select绑定的items数量超过阈值时,Vuetify会自动启用虚拟滚动优化性能,只渲染当前可见区域的列表项。但使用自定义item插槽后,自定义项的高度和默认样式不一致,虚拟滚动的高度计算逻辑失效,导致容器可滚动范围计算错误,看起来只显示了前57条数据。
具体解决方法:
- 关闭虚拟滚动:200条数据完全在性能可接受范围内,直接给v-select添加
virtual-scroll="false"属性,强制渲染全部列表项:<v-select v-model="selectedItem" :items="items" virtual-scroll="false" > <template v-slot:item="{ item }"> <!-- 你的自定义item内容 --> <div>{{ item.label }}</div> </template> </v-select> - 指定自定义item高度:如果想保留虚拟滚动优化,手动设置
item-height属性为自定义item的实际高度(比如48px),让虚拟滚动能正确计算总滚动高度:<v-select v-model="selectedItem" :items="items" :item-height="48" > <template v-slot:item="{ item }"> <!-- 你的自定义item内容 --> <div style="height: 48px; line-height: 48px;">{{ item.label }}</div> </template> </v-select> - 排查插槽逻辑:检查自定义插槽内是否存在意外的条件渲染(比如
v-if错误过滤数据)、样式隐藏(比如display: none)等情况,确保每个item都能正常渲染。 - 验证数据完整性:确认绑定的
items数组确实包含200条数据,没有在传递过程中被截断(比如计算属性处理错误)。
内容的提问来源于stack exchange,提问作者kipo87
相关产品推荐
相关产品推荐

