Skip to content

xtf-descriptions ​

组件说明 ​

xtf-descriptions 是描述列表,用于以数据或声明式子项按多列展示结构化详情。当前实现读取 items 数据。

  • 实际 Demo 路由:#/pages/components/xtf-descriptions/index
  • Demo 源码

基础用法 ​

1. 两列数据详情 ​

通过 items 的 label、value、span 生成两列详情,跨列项占满当前两列。

vue
<template>
  <view class="doc-descriptions-data">
    <XtfDescriptions title="订单信息" :items="fixture" :columns="2" label-width="110rpx" />
  </view>
</template>

<script setup lang="uts">
import XtfDescriptions from "@/uni_modules/xtf-linkuiunix/components/xtf-descriptions/xtf-descriptions.uvue"

const fixture = [{ label: '订单号', value: 'SO-20261029', span: 1 }, { label: '客户', value: '星海商贸', span: 1 }, { label: '配送地址', value: '深圳市南山区科技园', span: 2 }] as Array<any>
console.log("descriptions items", fixture.length)
</script>

<style>
.doc-descriptions-data { display: flex; flex-direction: column; padding: 24rpx; }
</style>

2. 动态边框与纵向布局 ​

运行时分别切换 bordered 和 vertical,观察子项从父 context 读取的边框与布局配置。

vue
<template>
  <view class="doc-descriptions-dynamic">
    <XtfDescriptions title="商品参数" :items="fixture" :columns="2" :bordered="bordered" :layout="vertical ? 'vertical' : 'horizontal'" /><button class="doc-action-button" @click="toggleBorder">切换 bordered</button><button class="doc-action-button" @click="toggleLayout">切换 vertical</button><text class="doc-state-text">bordered: {{ bordered }} / vertical: {{ vertical }}</text>
  </view>
</template>

<script setup lang="uts">
import XtfDescriptions from "@/uni_modules/xtf-linkuiunix/components/xtf-descriptions/xtf-descriptions.uvue"

import { ref } from "vue"
const fixture = [{ label: '订单号', value: 'SO-20261029', span: 1 }, { label: '客户', value: '星海商贸', span: 1 }, { label: '配送地址', value: '深圳市南山区科技园', span: 2 }] as Array<any>
const bordered = ref(false)
const vertical = ref(false)
function toggleBorder(): void { bordered.value = !bordered.value; console.log("bordered", bordered.value) }
function toggleLayout(): void { vertical.value = !vertical.value; console.log("vertical", vertical.value) }
</script>

<style>
.doc-descriptions-dynamic { display: flex; flex-direction: column; padding: 24rpx; }
.doc-action-button { margin-top: 16rpx; }
.doc-state-text { margin-top: 12rpx; color: #475569; font-size: 24rpx; }
</style>

3. 声明式描述子项 ​

不传 items 时由 default slot 接收 XtfDescriptionItem,子项通过父 context 计算列宽和间距。

vue
<template>
  <view class="doc-descriptions-declarative">
    <XtfDescriptions title="声明式信息" :columns="2" :gap="12"><XtfDescriptionItem label="联系人" value="陈经理" /><XtfDescriptionItem label="联系电话" value="138 0000 0000" /><XtfDescriptionItem label="配送地址" :span="2" value="深圳市南山区科技园" /></XtfDescriptions>
  </view>
</template>

<script setup lang="uts">
import XtfDescriptionItem from "@/uni_modules/xtf-linkuiunix/components/xtf-description-item/xtf-description-item.uvue"
import XtfDescriptions from "@/uni_modules/xtf-linkuiunix/components/xtf-descriptions/xtf-descriptions.uvue"

console.log("声明式描述项已配置")
</script>

<style>
.doc-descriptions-declarative { display: flex; flex-direction: column; padding: 24rpx; }
</style>

全部属性 ​

属性源码类型withDefaults 默认值实际行为 / 范围适用范围
titlestring""参与组件运行逻辑;源码在 3 处读取该值;消费位置:script 行 35、template 行 5需要提供业务文案或图标内容时设置。
descriptionstring""参与组件运行逻辑;源码在 3 处读取该值;消费位置:script 行 35、template 行 6需要提供业务文案或图标内容时设置。
columnsnumber1参与组件运行逻辑;源码在 3 处读取该值;消费位置:script 行 34、由 XtfDescriptionItem 注入消费数据驱动或选项渲染场景。
layout"horizontal" | "vertical""horizontal"参与组件运行逻辑;源码在 2 处读取该值;可选值:horizontal / vertical;消费位置:script 行 45、由 XtfDescriptionItem 注入消费需要调整布局或视觉表现时设置。
labelWidthstring | number""设置对应区域宽度;消费位置:script 行 46、由 XtfDescriptionItem 注入消费需要调整布局或视觉表现时设置。
gapstring | number16参与组件运行逻辑;源码在 2 处读取该值;消费位置:script 行 47、由 XtfDescriptionItem 注入消费需要覆盖组件默认业务值时设置。
borderedbooleanfalse参与组件运行逻辑;源码在 3 处读取该值;消费位置:script 行 36、script 行 48、由 XtfDescriptionItem 注入消费需要覆盖组件默认业务值时设置。
size"sm" | "md" | "lg""md"参与组件运行逻辑;源码在 4 处读取该值;可选值:sm / md / lg;消费位置:script 行 36、script 行 37、script 行 49、由 XtfDescriptionItem 注入消费需要覆盖组件默认业务值时设置。
itemsArray<any>() => [] as Array<any>参与组件运行逻辑;源码在 2 处读取该值;消费位置:template 行 11、template 行 12数据驱动或选项渲染场景。
customClassstring""参与组件运行逻辑;源码在 1 处读取该值;消费位置:script 行 36需要调整布局或视觉表现时设置。
customStylestring | UTSJSONObject""参与组件运行逻辑;源码在 1 处读取该值;消费位置:template 行 2需要调整布局或视觉表现时设置。

事件 ​

事件名称源码触发边界回调参数参数说明
-当前组件未调用 defineEmits。--

插槽 ​

插槽Scope 参数实际渲染位置
default(props: {})仅在模板对应 <slot> 渲染位置生效。
extra(props: {})仅在模板对应 <slot> 渲染位置生效。
label(props: { item: any; index: number })仅在模板对应 <slot> 渲染位置生效。
item(props: { item: any; index: number })仅在模板对应 <slot> 渲染位置生效。

方法 ​

实例方法 ​

方法签名 / 返回值调用边界
--当前组件没有公开实例方法。

公开状态 ​

状态类型 / 包装读取边界
--当前组件没有公开状态。

主题说明 ​

  • var(--xtf-color-text):组件样式实际读取的主题变量,可在 xtf-config-provider 作用域或主题 class 下覆盖。
  • var(--xtf-color-text-secondary):组件样式实际读取的主题变量,可在 xtf-config-provider 作用域或主题 class 下覆盖。

平台与实现边界 ​

  • 基线为 HBuilderX 5.26+ 与 uni-app x;当前报告已验证 Web Chromium 的对应 Demo,不据此承诺 Safari、小程序或 App 原生端等价。
  • Android、iOS、HarmonyOS、Vapor 原生路径、触摸手势、字体、Canvas、安全区和系统权限能力,只有源码或完整性报告明确覆盖的部分才可视为已验证。
  • 本文按当前源码生成,不补入旧版 xtf-linkui 存在但迁移版未实现的 props、事件、slot 或方法。
  • 详细公共边界见 平台与实现边界,逐项运行证据见项目根目录 COMPONENT_COMPLETENESS.md。

MIT Licensed