You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React在线书店分页点击后自动跳回首页问题求助

解决React分页点击后自动跳回首页的问题

问题根源

问题出在Pagination组件的<a>标签上:<a href='' onClick={()=> paginate(pn)}>中,href=''会触发浏览器默认的页面刷新行为,导致组件重新初始化,currentBook回到初始值1,所以页面自动跳回首页。

解决方案

方案一:阻止a标签的默认刷新行为

修改Pagination组件的点击事件,添加e.preventDefault()阻止默认动作:

import React from 'react'

function Pagination({BooksPerPage, total , paginate} ) {
    const pagenumbers = [ ]
    for (let i = 1; i <= Math.ceil(total /BooksPerPage) ; i++) {
       pagenumbers.push(i)
    }

  return (
    <div>{pagenumbers.map((pn)=>(
          <span> 
            <a href='' onClick={(e)=> {
              e.preventDefault();
              paginate(pn);
            }}>{pn}</a>
          </span>
    ))}</div>
  )
}

export default Pagination

方案二:替换a标签为语义化元素(推荐)

分页按钮本质是交互控件,不是跳转链接,直接用<button>或<span>替代<a>,从根源避免默认刷新:

import React from 'react'

function Pagination({BooksPerPage, total , paginate} ) {
    const pagenumbers = [ ]
    for (let i = 1; i <= Math.ceil(total /BooksPerPage) ; i++) {
       pagenumbers.push(i)
    }

  return (
    <div>{pagenumbers.map((pn)=>(
          <span style={{cursor: 'pointer', margin: '0 8px'}}>
            <button 
              onClick={()=> paginate(pn)}
              style={{border: 'none', background: 'transparent', cursor: 'inherit'}}
            >{pn}</button>
          </span>
    ))}</div>
  )
}

export default Pagination

两种方案都能解决页面自动跳转的问题,方案二更符合单页应用的交互逻辑,也更语义化。

内容的提问来源于stack exchange,提问作者Dimitriy Glefa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 10:55:29