const search = (param, pageNo, pageSize) => { setSearchLoading(true); setPageNo(pageNo); setPageSize(pageSize); let params = { dto: param }; api.feight.searchFreight(params) .subscribe({ next: (data) => { setDataSource(data.data); setTotal(data.total); }, }) .add(() => { setSearchLoading(false); }); } return (<> {/* 列表 */} <ProTable actionRef={listTable} rowKey="id" defaultSize="small" bordered scroll={{ x: 1600, y: 'calc(100vh - 360px)' }} columns={columns} request={(params) => search(params)} rowSelection={{ onChange: (rowKeys) => { setSelectedKeys(rowKeys) } }} search={{ labelWidth: 'auto', span: 4 }} dateFormatter="string" headerTitle={<span>运价列表</span>} pagination={{ pageSize: 20, size: 'small' }} tableAlertRender={false} dataSource={dataSource} total={total} loading={searchLoading} />这段代码查询的页数和pageSize的数量相同是为什么?并改正一下
时间: 2024-04-18 20:33:16 浏览: 136
fastify-no-cache:固定插件以禁用客户端缓存
根据你提供的代码,查询的页数和pageSize的数量相同的原因是因为在`search`函数中,你在调用`setPageNo(pageNo)`和`setPageSize(pageSize)`之前就调用了`setSearchLoading(true)`,这可能导致在请求数据时,页码和每页显示数量还没有被正确地设置。
为了解决这个问题,你可以将`setSearchLoading(true)`的位置移动到页码和每页显示数量被正确设置后,即在调用`setPageNo(pageNo)`和`setPageSize(pageSize)`之后。修改后的代码如下:
```jsx
const search = (param, pageNo, pageSize) => {
setPageNo(pageNo);
setPageSize(pageSize);
setSearchLoading(true); // 将 setSearchLoading 放到正确的位置
let params = { dto: param };
api.feight.searchFreight(params)
.subscribe({
next: (data) => {
setDataSource(data.data);
setTotal(data.total);
},
})
.add(() => {
setSearchLoading(false);
});
}
```
通过将`setSearchLoading(true)`放在正确的位置,确保在请求数据之前页码和每页显示数量已经被正确设置。
另外,还需要注意在ProTable组件中,`request`属性应该接受一个函数,而不是直接传递`search`函数。修改后的代码如下:
```jsx
<ProTable
// ...
request={(params) => search(params, 1, 20)} // 传递正确的参数
// ...
/>
```
在调用`request`属性时,传入正确的参数,例如`1`表示第一页,`20`表示每页显示20条数据。
希望以上解释和修改能够帮助到你!如果还有其他问题,请随时提问。
阅读全文