【发布时间】:2021-03-19 02:57:42
【问题描述】:
我的网站有一个功能组件页面,在其中一个页面内我有一个表格,这个表格获取 API 上的数据。为了更舒适,表格有分页。我正在使用 Material-UI 中的现成解决方案分页。我的分页工作正常,当我更改页面时,表中的数据正在更改,但 URL 地址没有。我希望能够发送带有一些参数(如 GET 请求或其他东西)的 URL,它显示表的特定页面。
我尝试使用两种解决方案,但都不能按我的需要工作
路由器的第一个解决方案。我不确定这是否是我需要的,因为表格的页面没有单独的页面,表格只是从 API 获取数据,然后将它们分开在页面上。此外,此解决方案为页面创建链接,但在浏览页面时不会更改 URL
import React from 'react'
import { MemoryRouter, Route } from 'react-router';
import { Link } from 'react-router-dom';
import { makeStyles } from '@material-ui/core/styles';
import Pagination from '@material-ui/lab/Pagination';
import PaginationItem from '@material-ui/lab/PaginationItem';
const useStyles = makeStyles((theme) => ({
root: {
'& > *': {
marginTop: theme.spacing(2),
},
display: 'flex'
},
pagination: {
marginLeft: 'auto',
marginBottom: '2%'
}
}));
function Paginations({ totalPages, setCurrentPage }) {
const classes = useStyles();
const paginationHandler = (event, value) => {
setCurrentPage(value);
};
return (
<MemoryRouter initialEntries={['/log']} initialIndex={0}>
<Route>
{({ location }) => {
const query = new URLSearchParams(location.search);
const page = parseInt(query.get('page') || '1', 10);
return (
<div className={classes.root}>
<Pagination
className={classes.pagination}
page={page}
count={totalPages}
onChange={paginationHandler}
renderItem={(item) => (
<PaginationItem
component={Link}
to={`/log${item.page === 1 ? '' : `?page=${item.page}`}`}
{...item}
/>
)}
/>
</div>
);
}}
</Route>
</MemoryRouter >
)
}
export default Paginations;
第二种解决方案:改变表格中的页面但不是改变URL
import React from 'react'
import { makeStyles } from '@material-ui/core/styles';
import Pagination from '@material-ui/lab/Pagination';
const useStyles = makeStyles((theme) => ({
root: {
'& > *': {
marginTop: theme.spacing(2),
},
display: 'flex'
},
pagination: {
marginLeft: 'auto',
marginBottom: '2%'
}
}));
function Paginations({ totalPages, setCurrentPage }) {
const classes = useStyles();
const paginationHandler = (event, value) => {
setCurrentPage(value);
};
return (
<div className={classes.root}>
<Pagination count={totalPages} className={classes.pagination} onChange={paginationHandler} variant="outlined" shape="rounded" />
</div>
)
}
export default Paginations;
【问题讨论】:
标签: javascript reactjs pagination request material-ui