我如何在 ReactJS 中处理我的分页?
How do I handle my pagination in ReactJS?
下面是我的代码,用于处理分页并向我的站点添加上一个和下一个按钮。
const [pageNumber, setPageNumber] = useState(props.match.params.pageno);
useEffect(() => {setPageNumber(props.match.params.pageno)},[props]);
useEffect(() => {
async function fetchData() {
try {
const { data } = await axios.get('http://api.tvmaze.com/shows?page=' +pageNumber);
setShowsData(data);
setLoading(false);
} catch (e) {
console.log(e);
}
}
fetchData();
}, [ pageNumber ]);
return (
<div>
<Link className={pageNumber===0 ? 'hidden' : 'showlink'} to={`/shows/page/${parseInt(pageNumber)-1}`}>
Previous
</Link>
<Link className='showlink' to={`/shows/page/${parseInt(pageNumber)+1}`}>
Next
</Link>
</div>
);
App.css:
.hidden{
display:none;
}
我该如何完成?
我试图在页码为 0 时隐藏上一页 link,因为在那之前没有任何内容。我试过上面的代码,但是没有效果。
我认为您在 pageNumber
和 0 之间存在类型不匹配。您在下一个 Link
中通过调用 parseInt(pageNumber)
来解决这个问题。您还需要为您的 className 检查执行此操作。否则你永远不会满足你正在检查的那个条件。
快速复习:
"0" === 0 // false
"0" == 0 // true
三等号始终检查数据类型,而双等号将尝试对右侧值执行 type coercion。
您还为 pageNumber
进行条件渲染,例如,
{ pageNumber !== 0 && <Link>{your code}</Link> }
对于这种情况,您还必须检查数据类型的类型,例如 string
进入 pageNumber
并且您正在与 int
进行比较,那么此代码没有任何效果。
使用此条件渲染,您不必依赖 CSS 部分,这将由 javascript.
处理的条件渲染
下面是我的代码,用于处理分页并向我的站点添加上一个和下一个按钮。
const [pageNumber, setPageNumber] = useState(props.match.params.pageno);
useEffect(() => {setPageNumber(props.match.params.pageno)},[props]);
useEffect(() => {
async function fetchData() {
try {
const { data } = await axios.get('http://api.tvmaze.com/shows?page=' +pageNumber);
setShowsData(data);
setLoading(false);
} catch (e) {
console.log(e);
}
}
fetchData();
}, [ pageNumber ]);
return (
<div>
<Link className={pageNumber===0 ? 'hidden' : 'showlink'} to={`/shows/page/${parseInt(pageNumber)-1}`}>
Previous
</Link>
<Link className='showlink' to={`/shows/page/${parseInt(pageNumber)+1}`}>
Next
</Link>
</div>
);
App.css:
.hidden{
display:none;
}
我该如何完成?
我试图在页码为 0 时隐藏上一页 link,因为在那之前没有任何内容。我试过上面的代码,但是没有效果。
我认为您在 pageNumber
和 0 之间存在类型不匹配。您在下一个 Link
中通过调用 parseInt(pageNumber)
来解决这个问题。您还需要为您的 className 检查执行此操作。否则你永远不会满足你正在检查的那个条件。
快速复习:
"0" === 0 // false
"0" == 0 // true
三等号始终检查数据类型,而双等号将尝试对右侧值执行 type coercion。
您还为 pageNumber
进行条件渲染,例如,
{ pageNumber !== 0 && <Link>{your code}</Link> }
对于这种情况,您还必须检查数据类型的类型,例如 string
进入 pageNumber
并且您正在与 int
进行比较,那么此代码没有任何效果。
使用此条件渲染,您不必依赖 CSS 部分,这将由 javascript.
处理的条件渲染