Skip to content

IndexList 索引列表 ​

uvx-index-list 用于展示按字母或自定义索引分组的长列表,右侧索引栏支持点击和连续滑动定位,常用于联系人、城市与机场列表。

平台兼容性 ​

AndroidiOS鸿蒙H5微信
4.41+4.41+4.61+4.41+4.41+

小程序端仅支持微信。

平台能力 ​

能力AndroidiOS鸿蒙H5微信
纵向滚动、索引触摸定位√√√√√
header、default、footer 插槽√√√√√
暗色主题和自定义颜色√√√√√
init() 动态重新测量√√√√√

使用须知

  1. uvx-index-list、uvx-index-item、uvx-index-anchor 必须组合使用;索引列表顺序需要与分组渲染顺序一致。
  2. index-list 为空数组时自动生成 A-Z,不是隐藏索引栏。需要自定义索引时传入完整数组。
  3. 组件内部已经包含纵向 scroll-view,页面应避免再套可滚动容器。演示页通过 disableScroll 和 uvx-page direction="none" 禁用页面滚动。
  4. 项目使用 uvx-navbar 作为系统导航栏时,无需额外传入导航栏高度;只有使用非标准自定义导航栏时,才需要配置 custom-nav-height。
  5. 分组内容异步加载或高度发生变化后,调用公开的 init() 重新测量,否则索引定位仍使用旧布局。
  6. select 在触摸结束时触发,返回 index 和 value 两个参数;只接收第一个参数的旧代码仍然有效。
  7. active-color、inactive-color、锚点 color 和 bg-color 为空时跟随主题;显式传色后不再随暗色主题变化。

基础用法 ​

索引值、分组和锚点按相同顺序渲染。uvx-index-item 包裹一个完整分组,uvx-index-anchor 放在分组顶部。

vue
<template>
   <uvx-index-list
      :index-list="INDEX_LIST"
      @select="handleSelect"
   >
      <uvx-index-item
         v-for="(group, index) in GROUPS"
         :key="index"
         :index="group.index"
      >
         <uvx-index-anchor :text="group.index"></uvx-index-anchor>
         <view
            v-for="(name, nameIndex) in group.names"
            :key="nameIndex"
            class="contact-row"
         >
            <text>{{ name }}</text>
         </view>
      </uvx-index-item>
   </uvx-index-list>
</template>

<script lang="uts" setup>
import type { Value } from "@/uni_modules/uvx-ui/components/uvx-index-list/types/index.uts";

type ContactGroup = {
   index: Value;
   names: string[];
};

const INDEX_LIST: Value[] = ["A", "B", "C"];
const GROUPS: ContactGroup[] = [
   { index: "A", names: ["阿明", "安然"] },
   { index: "B", names: ["白雪", "包容"] },
   { index: "C", names: ["陈晨", "程远"] },
];

/**
 * 处理索引选择
 * @param index 索引下标
 * @param value 索引值
 * @returns null
 */
const handleSelect = (index: number, value: Value): void => {
   console.log("选中索引", index, value);
};
</script>

头部和底部 ​

header 位于首个分组之前,footer 位于全部分组之后。两者会跟随列表内容滚动。

vue
<uvx-index-list :index-list="INDEX_LIST">
   <template #header>
      <view class="list-header">
         <text>常用联系人</text>
      </view>
   </template>

   <uvx-index-item>...</uvx-index-item>

   <template #footer>
      <view class="list-footer">
         <text>共 120 位联系人</text>
      </view>
   </template>
</uvx-index-list>

自定义索引颜色 ​

索引颜色支持单独设置激活态和普通态。未传颜色时使用主题变量。

vue
<uvx-index-list
   :index-list="INDEX_LIST"
   active-color="#5ac725"
   inactive-color="#909399"
>
   ...
</uvx-index-list>

自定义锚点 ​

锚点支持文字颜色、背景、字号和高度。

vue
<uvx-index-list
   :index-list="INDEX_LIST"
>
   <uvx-index-item>
      <uvx-index-anchor
         text="A"
         color="#ffffff"
         bg-color="#3c9cff"
         :size="15"
         :height="36"
      ></uvx-index-anchor>
   </uvx-index-item>
</uvx-index-list>

动态内容重新测量 ​

分组内容异步更新后,通过组件实例调用 init()。

vue
<template>
   <uvx-index-list ref="uIndexList" :index-list="INDEX_LIST">
      ...
   </uvx-index-list>
</template>

<script lang="uts" setup>
const uIndexList = ref<UvxIndexListComponentPublicInstance | null>(null);

/**
 * 数据加载完成后刷新布局
 * @returns null
 */
const handleDataLoaded = (): void => {
   uIndexList.value?.init();
};
</script>

API ​

IndexList Props ​

属性说明类型默认值平台
inactive-color非激活索引颜色,为空时使用内容文本主题色string""全部
active-color激活索引背景色,为空时使用主题主色string""全部
index-list索引字符数组;空数组时自动生成 A-Z(string | number)[][]全部
custom-nav-height非标准自定义导航栏的内容栏高度,支持 px 数值、px 和 rpx;使用 uvx-navbar 时无需传入string | number0全部
u-style根节点自定义样式,CSS 字符串string""全部
u-class追加到根节点的外部样式类string""全部

IndexList Events ​

事件说明参数平台
select触摸索引结束时触发index: number, value: string | number全部

IndexList Slots ​

名称说明平台
header列表头部内容全部
default索引分组内容全部
footer列表底部内容全部

IndexList Methods ​

方法说明参数平台
init()下一渲染周期重新测量索引栏和分组布局-全部

IndexItem Props ​

属性说明类型默认值平台
index分组标识;分组定位按渲染顺序对应 index-liststring | number0全部
u-style分组根节点自定义样式,CSS 字符串string""全部
u-class追加到分组根节点的外部样式类string""全部

IndexItem Slots ​

名称说明平台
default分组锚点和内容全部

IndexAnchor Props ​

属性说明类型默认值平台
text锚点文字string | number""全部
color锚点文字颜色,为空时使用内容文本主题色string""全部
size锚点文字大小,数字按 px 处理string | number14全部
bg-color锚点背景色,为空时使用容器主题色string""全部
height锚点高度,数字按 px 处理string | number32全部
u-style锚点根节点自定义样式,CSS 字符串string""全部
u-class追加到锚点根节点的外部样式类string""全部

参考 ​

uvx-ui · uni-app x 组件库