antd table 组件去掉分页,模拟从接口拿取一组输入。先展示10条数据,在底部有一个更多按钮,点击更多增加10条数据,直到数据加载完,更多按钮消失。
时间: 2023-12-23 18:02:42 浏览: 70
可以通过 `pagination` 属性将分页去掉,然后通过状态来控制表格的数据。具体实现如下:
```jsx
import { useState } from 'react';
import { Table, Button } from 'antd';
const dataSource = [
// 假数据
{ id: 1, name: '张三', age: 20 },
{ id: 2, name: '李四', age: 22 },
{ id: 3, name: '王五', age: 24 },
{ id: 4, name: '赵六', age: 26 },
{ id: 5, name: '钱七', age: 28 },
{ id: 6, name: '孙八', age: 30 },
{ id: 7, name: '周九', age: 32 },
{ id: 8, name: '吴十', age: 34 },
{ id: 9, name: '郑十一', age: 36 },
{ id: 10, name: '冯十二', age: 38 },
];
const columns = [
{
title: 'ID',
dataIndex: 'id',
key: 'id',
},
{
title: '姓名',
dataIndex: 'name',
key: 'name',
},
{
title: '年龄',
dataIndex: 'age',
key: 'age',
},
];
function App() {
const [data, setData] = useState(dataSource.slice(0, 10)); // 初始化展示10条数据
const [loading, setLoading] = useState(false);
const handleMoreClick = () => {
setLoading(true);
setTimeout(() => { // 模拟异步请求数据
const newData = dataSource.slice(data.length, data.length + 10);
setData([...data, ...newData]); // 将新数据添加到现有数据中
setLoading(false);
if (data.length + 10 >= dataSource.length) { // 如果数据加载完,则隐藏更多按钮
setHasMore(false);
}
}, 1000);
};
const [hasMore, setHasMore] = useState(true); // 是否还有更多数据
return (
<>
<Table dataSource={data} columns={columns} pagination={false} />
{hasMore && (
<div style={{ textAlign: 'center', marginTop: 16 }}>
<Button onClick={handleMoreClick} loading={loading}>
{loading ? '加载中...' : '更多'}
</Button>
</div>
)}
</>
);
}
export default App;
```
在上面的代码中,首先定义了一个 `dataSource` 数组,里面包含了假数据。然后通过 `useState` 定义了 `data` 和 `loading` 状态,分别表示表格数据和数据是否正在加载。在 `handleMoreClick` 函数中,模拟了一个异步请求数据的过程,将新数据添加到现有数据中,然后根据数据是否加载完来决定是否隐藏更多按钮。最后,通过 `hasMore` 状态来控制是否显示更多按钮。
阅读全文