Skip to content
# t-list

List 列表

t-list 组件介绍 ​

长列表组件,list-view组件的增强版,增加自定义下拉刷新和上拉加载,增加WEB端和IOS端支持【scrollend】事件。

t-list 平台兼容 ​

HarmonyH5AndroidiOS小程序UTS
✅✅✅✅✅✅

t-list 基础用法 ​

vue
<template>
	<view :class="[`p-15 f tpg`]">
		<tui-theme-switch></tui-theme-switch>
		<t-card class='mb-15'
				title="List 滚动视图"
				sub-title="对官方list-view组件的增强,增加自定义下拉刷新和上拉加载,增加WEB端和IOS端支持【scrollend】事件"></t-card>
		<t-list type="primary"
				class="f"
				ref="ins"
				@scrolltolower="scrolltolower"
				@refresherrefresh="refresherrefresh"
				@scrollend="scrollend">
			<t-list-item v-for='(item,index) in componentList'
						 :key="index">
				<t-row :class="`p-15 mb-15 tvg trm fjcb`">
					<text :class="[`ttc-`]">{{item['name']}}</text>
					<t-icon name="thumb-up"></t-icon>
					<t-icon name="edit-pen"></t-icon>
					<t-icon name="star"></t-icon>
					<t-icon name="trash"></t-icon>
				</t-row>
			</t-list-item>
		</t-list>
	</view>
</template>

<script setup>
	import { TuiApi } from '@/api'
	import { TuiSleep } from '@/uni_modules/tui-common'
	const ins = ref<TListComponentPublicInstance | null>(null)
	const mask = ref(true)
	const cur = ref(1)
	const total = ref(0)
	const pageSize = ref(20)
	const list = ref<UTSJSONObject[]>([])
	const componentList = ref<UTSJSONObject[]>([])
	const sleep = new TuiSleep(1000)
	let loading : boolean = false
	function getComponentList() : Promise<UTSJSONObject[]> {
		return new Promise((
			resolve : (rst : UTSJSONObject[]) => void
		) => {
			if (loading) return
			loading = true
			TuiApi('getComponentTest', {
				"current": cur.value,
				"pageSize": pageSize.value,
				"keyword": '',
				"type": 'all',
				devstatus: 'completed'
			}, true).then((res : UTSJSONObject) => {
				const lastPage = (res as UTSJSONObject).getBoolean('data.lastPage')!
				sleep.call(() => {
					cur.value++
					loading = false
					if (lastPage) {
						ins.value!.setLoadmore(3)
					} else {
						//设置状态为0会销毁组件,避免loading会在后台运行
						ins.value!.setLoadmore(0)
					}
					nextTick(() => {
						resolve((res as UTSJSONObject).getArray('data.list') as UTSJSONObject[])
					})
				})
			})
		})
	}
	function scrollend(e : UniScrollEvent) {
		console.log(e)
	}
	function refresherrefresh() {
		loading = false
		cur.value = 1
		getComponentList().then((data : UTSJSONObject[]) => {
			componentList.value = data
			ins.value!.closerefresher()
		})
	}
	function scrolltolower() {
		getComponentList().then((data : UTSJSONObject[]) => {
			componentList.value.push(...data)
		})
	}
	onUnload(() => {
		sleep.clear()
	})
	onLoad(() => {
		getComponentList().then((data : UTSJSONObject[]) => {
			ins.value!.hideMask()
			componentList.value = data
		})
	})
</script>

t-list Props ​

属性名类型默认值说明可选值
sizeString"medium"组件尺寸large, medium, small, mini
typeString"primary"组件类型info, primary, error, warning, success
disabledBooleanfalse组件是否禁用true, false
hoverBooleanfalse是否有点击效果true, false
pathString""点击组件后跳转的页面路径-
effectString"normal"组件显示主题normal, dark, light, plain
loadmoreBooleantrue是否显示加载更多true, false
refresherEnabledBooleantrue是否禁用下拉刷新true, false
loadmoreBoxClassString""加载更多盒子的样式-
refresherBoxClassString""下拉刷新盒子的样式-
directionString"vertical"滚动方向vertical
associativeContainerString""关联的滚动容器nested-scroll-view
bouncesBooleantrue控制是否回弹效果true, false
upperThresholdNumber50距顶部多远时触发scrolltoupper事件-
lowerThresholdNumber50距底部多远时触发scrolltolower事件-
scrollTopNumber0设置竖向滚动条位置-
scrollLeftNumber0设置横向滚动条位置-
scrollIntoViewString""值应为某子元素id-
scrollWithAnimationBooleanfalse是否使用滚动动画true, false
refresherThresholdNumber100设置下拉刷新阈值-
showScrollbarBooleanfalse控制是否出现滚动条true, false
customNestedScrollBooleanfalse子元素是否开启嵌套滚动true, false
backtopBooleanfalse是否显示返回顶部true, false
refresherBackgroundString"transparent"设置下拉刷新区域背景颜色-
maskClassString""遮罩层样式-

t-list Events ​

事件名说明回调参数
refresherpulling下拉刷新控件被下拉RefresherEvent
refresherrefresh下拉刷新被触发RefresherEvent
refresherrestore下拉刷新被复位RefresherEvent
refresherabort下拉刷新被中止RefresherEvent
scrolltoupper滚动到顶部/左边ScrollEvent
scrolltolower滚动到底部/右边ScrollEvent
scroll滚动时触发ScrollEvent
scrollend滚动结束时触发ScrollEvent
click点击时触发-
transitionend动画结束时触发-
initFinished组件初始化完成触发组件的节点信息
touchstart触摸开始时触发触摸事件对象
touchend触摸结束时触发触摸事件对象

Methods ​

方法名说明参数返回值
setLoadmore设置加载更多状态status: number无
showMask显示遮罩层无无
hideMask隐藏遮罩层无无
closerefresher关闭下拉刷新无无

t-list Slots ​

插槽名说明
default内容插槽,用于放置t-list-item子组件
loadmore加载更多插槽,用于自定义加载更多内容
refresher下拉刷新插槽,用于自定义下拉刷新内容
mask遮罩层插槽,用于自定义遮罩层内容