Skip to content

Commit 5175427

Browse files
committed
docs(pagination): add usePagination demos
1 parent 2ed7f05 commit 5175427

File tree

4 files changed

+90
-0
lines changed

4 files changed

+90
-0
lines changed

packages/app/src/pages/useRequest/index.tsx

+5
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@ const list: IListItem[] = [
8888
note: '通过设置 requstMethod, 可以使用自己的请求库。',
8989
route: 'axios',
9090
},
91+
{
92+
title: '普通分页',
93+
note: '普通的分页场景,我们会自动管理 current 和 pageSize。',
94+
route: 'pagination',
95+
},
9196
];
9297

9398
export default () => {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export default {
2+
navigationBarTitleText: 'useRequest 普通分页',
3+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
/**
2+
* desc: 普通的分页场景,我们会自动管理 `current` 和 `pageSize`。
3+
*/
4+
import React from 'react';
5+
import { useRequest } from 'taro-hooks';
6+
import Mock from 'mockjs';
7+
8+
import { View } from '@tarojs/components';
9+
import { AtList, AtListItem, AtPagination } from 'taro-ui';
10+
import DocPage from '@components/DocPage';
11+
12+
interface UserListItem {
13+
id: string;
14+
name: string;
15+
gender: 'male' | 'female';
16+
email: string;
17+
disabled: boolean;
18+
}
19+
20+
const userList = (current: number, pageSize: number) =>
21+
Mock.mock({
22+
total: 55,
23+
[`list|${pageSize}`]: [
24+
{
25+
id: '@guid()',
26+
name: '@cname()',
27+
'gender|1': ['male', 'female'],
28+
email: '@email()',
29+
disabled: false,
30+
},
31+
],
32+
});
33+
34+
async function getUserList(params: {
35+
current: number;
36+
pageSize: number;
37+
gender?: string;
38+
}): Promise<{ total: number; list: UserListItem[] }> {
39+
return new Promise((resolve) => {
40+
setTimeout(() => {
41+
resolve(userList(params.current, params.pageSize));
42+
}, 1000);
43+
});
44+
}
45+
46+
const ReadyRequest = () => {
47+
const { data, loading, pagination } = useRequest(
48+
({ current, pageSize }: { current: number; pageSize: number }) =>
49+
getUserList({ current, pageSize }),
50+
{
51+
paginated: true,
52+
},
53+
);
54+
console.log(pagination);
55+
return (
56+
<DocPage title="useRequest 普通分页" panelTitle="普通分页">
57+
{loading ? (
58+
<View>loading...</View>
59+
) : (
60+
<AtList>
61+
{data?.list?.map(({ email, name }: UserListItem) => (
62+
<AtListItem title={name} note={email} key={name} />
63+
))}
64+
</AtList>
65+
)}
66+
67+
<AtPagination
68+
customStyle={{ marginTop: '10px' }}
69+
{...pagination}
70+
onPageChange={(type: string, current: number) =>
71+
pagination.onChange(current, 10)
72+
}
73+
/>
74+
</DocPage>
75+
);
76+
};
77+
78+
export default ReadyRequest;

packages/hooks/src/useRequest/index.md

+4
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,10 @@ const {...} = useRequest<R>(
238238
- 会额外返回 `pagination` 字段,包含所有分页信息,及操作分页的函数。
239239
- `refreshDeps` 变化,会重置 `current` 到第一页,并重新发起请求,一般你可以把 pagination 依赖的条件放这里。
240240

241+
下面示例使用`AtPagination`(即`Taro ui`)的分页器。属性同`antd``pagination`.
242+
243+
<code src="@pages/useRequest/pagination"></code>
244+
241245
#### API
242246

243247
```javascript

0 commit comments

Comments
 (0)