我有一个分页组件(React)。我需要滚动到顶部时,改变页面。有人能帮助我吗?
const MAX_BTN = 9;
const MAX_BTN_LEFT = (MAX_BTN - 1) / 2;
const Pagination = ({items, limit = 20, page, setPage}) => {
const pages = items !== null && Math.ceil(items.total_results / limit);
const startBtn = Math.max(page - MAX_BTN_LEFT, 1);
return (
<ul className="pagination">
{Array(Math.min(MAX_BTN, pages)).fill()
.map((_, i) => i + startBtn)
.map(value => (
<li key={value}>
<button onClick={() => setPage(value)}>{value}</button>
</li>
))
}
</ul>
)
}
export default Pagination;
3条答案
按热度按时间cl25kdpy1#
您可以使用函数返回顶部:
在你的纽扣上说:
ljsrvy3e2#
单击链接时,使用以下方法
scrollTo
调用浏览器window
对象sqougxex3#
一个优雅的处理方法是为应用的最顶部创建一个
ref
,然后将ref传递给一个钩子,当路径名改变时,钩子会处理滚动到页面顶部的操作。下面是我使用的一个简单的钩子(类型定义可以清除):
使用滚动到顶部.ts
现在,在应用的第一个元素的顶部添加引用。
App.js:(或任何组件)
import useScrollToTop from './useScrollToTop';
然后创建一个新的空引用:
const ref = useRef<HTMLDivElement | null>(null);
将ref传入钩子:
useScrollToTop(ref)
在应用的最顶部定义引用(内部组件示例):
现在,只要路径发生变化,最终用户就会滚动到页面顶部。