list-view.md 3.4 KB
Newer Older
D
DCloud_LXH 已提交
1 2 3 4
## list-view

<!-- UTSCOMJSON.list-view.description -->

D
DCloud_LXH 已提交
5 6
<!-- UTSCOMJSON.list-view.compatibility -->

D
DCloud_LXH 已提交
7 8 9 10 11 12 13 14
在App中,基于recycle-view的list,才能实现长列表的资源自动回收,以保障列表加载很多项目时,屏幕外的资源被有效回收。list-view就是基于recycle-view的list组件。

每个list由1个父组件list-view及若干子组件list-item构成。仅有有限子组件可识别,[见下](#children-tags)

list-view和scroll-view都是滚动组件,list适用于长列表场景,其他场景适用于scroll-view。

list-view支持通过子组件sticky-header处理吸顶的场景。

15
<!-- UTSCOMJSON.list-view.attribute -->
D
DCloud_LXH 已提交
16 17 18

<!-- UTSCOMJSON.list-view.event -->

19 20
<!-- UTSCOMJSON.list-view.component_type-->

D
DCloud_LXH 已提交
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
### 自定义下拉刷新样式

list-view组件有默认的下拉刷新样式,如果想自定义,则需使用自定义下拉刷新。

1. 设置`refresher-default-style`属性为 none 不使用默认样式
2. 设置 list-item 定义自定义下拉刷新元素并声明为 `slot="refresher"`,需要设置刷新元素宽高信息否则可能无法正常显示!
   ```html
   <template>
   	<list-view refresher-default-style="none" :refresher-enabled="true" :refresher-triggered="refresherTriggered"
   			 @refresherpulling="onRefresherpulling" @refresherrefresh="onRefresherrefresh"
   			 @refresherrestore="onRefresherrestore" style="flex:1" >

   		<list-item v-for="i in 10" class="content-item">
   			<text class="text">item-{{i}}</text>
   		</list-item>

   		<!-- 自定义下拉刷新元素 -->
   		<list-item slot="refresher" class="refresh-box">
   			<text class="tip-text">{{text[state]}}</text>
   		</list-item>
   	</list-view>
   </template>
   ```
3. 通过组件提供的refresherpulling、refresherrefresh、refresherrestore、refresherabort下拉刷新事件调整自定义下拉刷新元素!实现预期效果

**注意:**
+ 3.93版本开始支持
+ 目前自定义下拉刷新元素不支持放在list-view的首个子元素位置上。可能无法正常显示

DCloud_Heavensoft's avatar
DCloud_Heavensoft 已提交
50 51 52 53 54
### 嵌套模式

scroll-view开启嵌套模式后,list-view 可作为内层滚动视图与外层 scroll-view 实现嵌套滚动

设置内层 list-view 的 `associative-container` 属性为 "nested-scroll-view",开启内层 list-view 支持与外层 scroll-view 嵌套滚动
D
DCloud_LXH 已提交
55 56 57

<!-- UTSCOMJSON.list-view.children -->

58 59
<!-- UTSCOMJSON.list-view.example -->

D
DCloud_LXH 已提交
60 61 62 63 64 65 66 67 68 69
<!-- UTSCOMJSON.list-view.reference -->

## 示例代码

- 联网联表:[https://gitcode.net/dcloud/hello-uni-app-x/-/blob/master/pages/template/list-news/list-news.uvue](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/master/pages/template/list-news/list-news.uvue)
- 可左右滑动的多个列表:[https://gitcode.net/dcloud/hello-uni-app-x/-/tree/master/pages/template/long-list](https://gitcode.net/dcloud/hello-uni-app-x/-/tree/master/pages/template/long-list)


### Bug & Tips@tips

DCloud_Heavensoft's avatar
DCloud_Heavensoft 已提交
70
- 如需im那样的倒序列表,App端可给组件style配置 `transform: rotate(180deg)` 来实现。注意与下拉刷新有冲突,此时应避免启用下拉刷新。
D
DCloud_LXH 已提交
71 72
- 多列瀑布流是另外的组件,后续会提供
- list-view组件的overflow属性不支持配置visible
DCloud_Heavensoft's avatar
DCloud_Heavensoft 已提交
73
- 一次性初始化太多列表项,因为创建大量vnode耗时,会导致列表初始化变慢。此时推荐使用扩展组件[uni-recycle-view](https://ext.dcloud.net.cn/plugin?id=17385)来解决初始化慢的问题,该组件内部会分批创建节点,自动实现节点复用。