更新记录

1.0.6(2026-07-26) 下载此版本

  1. 【新增】分组级虚拟渲染,默认开启,可通过 :virtual="false" 关闭,大数据量下大幅减少节点数
  2. 【新增】v-model:current 受控选中、scrollToIndex / refresh 实例方法
  3. 【新增】showTitle 分组吸顶标题(支持 title 插槽自定义)、menu 菜单项插槽、empty 空数据插槽
  4. 【新增】scrolltolower 触底事件透传、menuWidth / scrollWithAnimation 配置项
  5. 【优化】change 事件在滚动切换分类时同样触发,新增 indexsource 字段(currenIndex 保留兼容)
  6. 【修复】数据异步加载或动态更新后联动失效(自动监听 list 重新测量)
  7. 【修复】组件不在页面顶部时锚点定位整体偏移
  8. 【修复】重复点击同一菜单无法回位、程序化滚动过程中左侧高亮抖动
  9. 【修复】list 动态变短时下标越界导致渲染异常;替换已废弃的 getSystemInfoSync
  10. 【文档】修正示例中 :height 应为 virtualMenuHeightleftBarStyleleftBarUnStyle 说明写反的问题

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

扫码体验

https://cdn.sanity.io/images/vrmep2m5/production/33d80d6b725f9793d0f454315ddb2b6f71381136-430x430.jpg

基础使用

<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

壁纸小程序

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议