更新记录
1.0.6(2026-07-26)
下载此版本
- 【新增】分组级虚拟渲染,默认开启,可通过
:virtual="false" 关闭,大数据量下大幅减少节点数
- 【新增】
v-model:current 受控选中、scrollToIndex / refresh 实例方法
- 【新增】
showTitle 分组吸顶标题(支持 title 插槽自定义)、menu 菜单项插槽、empty 空数据插槽
- 【新增】
scrolltolower 触底事件透传、menuWidth / scrollWithAnimation 配置项
- 【优化】
change 事件在滚动切换分类时同样触发,新增 index、source 字段(currenIndex 保留兼容)
- 【修复】数据异步加载或动态更新后联动失效(自动监听 list 重新测量)
- 【修复】组件不在页面顶部时锚点定位整体偏移
- 【修复】重复点击同一菜单无法回位、程序化滚动过程中左侧高亮抖动
- 【修复】list 动态变短时下标越界导致渲染异常;替换已废弃的 getSystemInfoSync
- 【文档】修正示例中
:height 应为 virtualMenuHeight、leftBarStyle 与 leftBarUnStyle 说明写反的问题
1.0.5(2025-08-07)
下载此版本
1.优化左侧菜单滚动效果
2.修复小程序滚动异常
1.0.3(2025-04-25)
下载此版本
1.增加左侧区域自定义样式参数
2.增加左侧区域事件暴露
查看更多
平台兼容性
uni-app
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| × |
√ |
√ |
√ |
√ |
- |
- |
- |
- |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| √ |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
其他
sk-linkage-menu
扫码体验
基础使用
<template>
<view>
<sk-linkage-menu :list="state.test" :virtual-menu-height="500">
<template v-slot="{data}">
<view>
<view class="class-item">
<view class="thumb-box item-food">
<view class="left-info">
<image :src="data.image" class="item-image"></image>
</view>
<view class="right-info">
<view class="goods-title"> {{ data.name }}</view>
</view>
</view>
</view>
</view>
</template>
</sk-linkage-menu>
</view>
</template>
<script lang="ts">
import { onMounted, reactive } from 'vue'
type stateType = {
test : any
}
export default{
setup(props) {
const state = reactive<stateType>({
test: [],
})
onMounted(() => {
for (let index = 0; index < 100; index++) {
state.test.push({
name: `${index}号`,
data: [
{
classify: `${index}号2`,
lazyLoad: false,
defaut: '/static/image/commer/defaut.png',
id: index,
},
{
classify: `${index}号`,
lazyLoad: false,
defaut: '/static/image/commer/defaut.png',
id: index,
},
],
})
}
})
return {
state,
}
},
}
</script>
API 参考
Props
| 属性名 |
类型 |
默认值 |
说明 |
| virtualMenuHeight |
Number |
窗口高度 - 44 |
组件可视高度(px) |
| list |
MenuDataItem[] |
[] |
菜单数据,结构见下方 MenuDataItem |
| virtual |
Boolean |
true |
分组级虚拟渲染开关,大数据量建议保持开启 |
| current |
Number |
0 |
当前选中菜单下标,支持 v-model:current |
| showTitle |
Boolean |
false |
是否显示右侧分组吸顶标题 |
| menuWidth |
String |
'180rpx' |
左侧菜单宽度 |
| scrollWithAnimation |
Boolean |
true |
右侧程序化滚动是否使用动画 |
| leftBarStyle |
Object |
- |
左侧选中滑块样式 |
| leftBarUnStyle |
Object |
- |
左侧未选中菜单项样式 |
| itemHeight |
Number |
130 |
已废弃:分组高度改为自动测量,保留仅为兼容旧版 |
Events
| 事件名 |
说明 |
回调参数 |
| change |
选中分类变化时触发(点击、滚动、方法调用均会触发) |
{ ...item, index, currenIndex, source },source 为 click / scroll / method |
| update:current |
选中下标变化,配合 v-model:current 使用 |
index: number |
| scrolltolower |
右侧内容区滚动触底,可用于分页加载 |
原生事件对象 |
Slots
| 插槽名 |
说明 |
作用域参数 |
| default |
右侧内容项,每条数据渲染一次 |
{ data }(分组与内容项字段合并) |
| menu |
左侧菜单项,可自定义图标/角标 |
{ item, index, active } |
| title |
右侧分组吸顶标题(需开启 showTitle) |
{ item, index } |
| empty |
list 为空时的占位内容 |
- |
Methods(通过 ref 调用)
| 方法名 |
说明 |
参数 |
| scrollToIndex |
程序化跳转到指定菜单 |
index: number |
| refresh |
重新测量布局。数据变更后组件会自动调用,插槽内容高度变化(如图片撑高)时可手动调用 |
- |
MenuDataItem 类型
| 属性名 |
类型 |
必填 |
说明 |
| name |
String |
是 |
左侧菜单名称 |
| data |
Array |
是 |
右侧内容列表 |
| id |
Number/String |
建议 |
唯一标识,优先作为渲染 key |
壁纸小程序
