Skip to content

Commit 280d78f

Browse files
author
cunjinli
committed
F readme
1 parent c45e12b commit 280d78f

File tree

1 file changed

+4
-70
lines changed

1 file changed

+4
-70
lines changed

README.md

Lines changed: 4 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,8 @@ npm install --save miniprogram-recycle-view
147147
| dataKey | String | 对应 recycle-item 的 wx:for 属性设置的绑定变量名 |
148148
| page | Page/Component | recycle-view 所在的页面或者组件的实例,页面或者组件内可以直接传 this |
149149
| itemSize | Object/Function | 此参数用来生成recycle-item的宽和高,前面提到过,要知道当前需要渲染哪些item,必须知道item的宽高才能进行计算<br />Object必须包含{width, height}两个属性,Function的话接收item, index这2个参数,返回一个包含{width, height}的Object<br />itemSize如果是函数,函数里面`this`指向RecycleContext<br />如果样式使用了rpx,可以通过transformRpx来转化为px。<br />为Object类型的时候,还有另外一种用法,详细情况见下面的itemSize章节的介绍。 |
150-
| useInPage | Boolean | 是否整个页面只有recycle-view。Page的定义里面必须至少加空的onPageScroll函数,主要是用在页面级别的长列表,并且需要用到onPullDownRefresh的效果。 |
150+
| useInPage | Boolean | 是否整个页面只有recycle-view。Page的定义里面必须至少加空的onPageScroll函数,主要是用在页面级别的长列表,并且需要用到onPullDownRefresh的效果。切必须设置`root`参数为当前页面对象 |
151+
| root | Page | 当前页面对象,可以通过getCurrentPages获取, 当useInPage为true必须提供 |
151152
| placeholderClass | Array | 和itemSize的最后一种用法一起配合,自动生成placeholder-image占位背景图。详见最后itemSize章节的介绍。 |
152153

153154
RecycleContext 对象提供的方法有:
@@ -161,78 +162,11 @@ npm install --save miniprogram-recycle-view
161162
| forceUpdate | callback, reinitSlot | 重新渲染recycle-view。callback是渲染完成的回调函数,当before和after这2个slot的高度发生变化时候调用此函数,reinitSlot设置为true。当item的宽高发生变化的时候也需要调用此方法。 |
162163
| getBoundingClientRect | index | 获取某个数据项的在长列表中的位置,返回{left, top, width, height}的Object。 |
163164
| getScrollTop || 获取长列表的当前的滚动位置。 |
164-
| transformRpx | rpx | 将rpx转化为px,返回转化后的px整数。itemSize返回的宽高单位是px,可以在这里调用此函数将rpx转化为px,参数是Number,例如ctx.transformRpx(140),返回70。 |
165+
| transformRpx | rpx | 将rpx转化为px,返回转化后的px整数。itemSize返回的宽高单位是px,可以在这里调用此函数将rpx转化为px,参数是Number,例如ctx.transformRpx(140),返回70。注意,transformRpx会进行四舍五入,所以transformRpx(20) + transformRpx(90)不一定等于transformRpx(110) |
165166
| getViewportItems | inViewportPx | 获取在视窗内的数据项,用于判断某个项是否出现在视窗内。用于曝光数据上报,菜品和类别的联动效果实现。参数inViewportPx表示距离屏幕多少像素为出现在屏幕内,可以为负值。 |
166167

167168
## itemSize使用
168169

169-
itemSize主要是用于生成每条数据的宽高信息,有下面的2种宽高信息生成的方法。
170-
171-
### 1. 自动生成宽高
172-
173-
基本的思路是提供少量的数据进行预先渲染,然后通过createSelectorQuery接口查询得到高度信息。
174-
175-
JS的调用方法如下:
176-
177-
```javascript
178-
var ctx = createRecycleContext({
179-
id: 'recycleId',
180-
dataKey: 'recycleList',
181-
page: this,
182-
itemSize: {
183-
props: ['azFirst'],
184-
cacheKey: 'cacheKey', // 预先缓存的key
185-
queryClass: 'recycle-itemsize', // 动态查询的class
186-
dataKey: 'recycleListItemSize', // 预先渲染的数据的wx:for绑定的变量
187-
},
188-
placeholderClass: ['recycle-image', 'recycle-text']
189-
})
190-
```
191-
192-
itemSize的各个属性,要配合wxml的详细写法来生成,先看下wxml的写法:
193-
194-
```html
195-
<recycle-view wx:if="{{showRecycleview}}" class="recycle-list" placeholder-image="{{placeholderImage}}" bindscrolltolower="scrollToLower" scroll-with-animation="{{true}}" scroll-to-index="{{index}}" scroll-top="{{scrollTop}}" batch="{{batchSetRecycleData}}" height="500" id="recycleId">
196-
<view slot="itemsize">
197-
<template is="recycleItem" data="{{item: item, recycleList: recycleListItemSize}}"></template>
198-
</view>
199-
<template is="recycleItem" data="{{item: item, recycleList: recycleList}}"></template>
200-
<view slot="after" style="height:200px;">after height:200px view</view>
201-
</recycle-view>
202-
<template name="recycleItem">
203-
<recycle-item style="width:50%;" wx:for="{{recycleList}}" wx:key="id">
204-
<view class="recycle-itemsize" style="width:100%;height:{{item.test.azFirst ? 160 : 160}}px;position: relative;">
205-
<image class='recycle-image' style='width:80px;height:80px;' src="{{item.image_url}}?imageView2/2/w/120/h/0/q/120/format/jpg"></image>
206-
<text class="recycle-text">{{item.idx+1}}. {{item.title}}</text>
207-
</view>
208-
</recycle-item>
209-
</template>
210-
```
211-
212-
JS和wxml里面的class的对应关系如下图所示:
213-
214-
![](./images/recycle-view.png)
215-
216-
还有2个属性props和cacheKey,其中props可以指定数据的多个key,长列表组件会自动聚合key对应的值,并取出数据进行预先渲染并查询得到高度。假设数据为
217-
218-
```javascript
219-
[{
220-
azFirst: true, // 对应高度130px
221-
...
222-
}, {
223-
azFirst: false, // 对应高度120px
224-
...
225-
}]
226-
```
227-
228-
props指定的`azFirst`对应的数据里面的属性。
229-
230-
由于自动计算高度有一定耗时,可以指定cacheKey,长列表则会将计算的高度缓存起来,下次使用。当数据的宽高发生改变的时候,必须要重新指定一个cacheKey。
231-
232-
当指定了`placeholderClass`之后,则会自动生成占位背景图设置在`recycle-view`组件的`placeholder-image`属性上。
233-
234-
### 2. 自己计算高度
235-
236170
itemSize可以为包含{width, height}的Object,所有数据只有一种宽高信息。如果有多种,则可以提供一个函数,长列表组件会调用这个函数生成每条数据的宽高信息,如下所示:
237171

238172
```javascript
@@ -257,4 +191,4 @@ npm install --save miniprogram-recycle-view
257191
7. 如果长列表里面包含图片,必须保证图片资源是有HTTP缓存的,否则在滚动过程中会发起很多的图片请求。
258192
8. 有些数据不一定会渲染出来,使用wx.createSelectorQuery的时候有可能会失效,可使用RecycleContext的getBoundingClientRect来替代。
259193
9. 当使用了useInPage参数的时候,必须在Page里面定义onPageScroll事件。
260-
194+
10. transformRpx会进行四舍五入,所以`transformRpx(20) + transformRpx(90)`不一定等于`transformRpx(110)`

0 commit comments

Comments
 (0)