【已解决】记录react页面跳转是否要回到指定浏览位置解决方案

基于react的umi项目开发中遇到页面之间跳转,有的页面跳转过来需要回到顶部,有的页面需要滚动到指定的位置,常见一些列表页面跳转详情页面,再跳转回来

找了很多资料用了很多方法,都没实现,后面摸索出这个方法
解决方案记录:

  1. 先是回到顶部解决方案:
// 在layout组件绑定了节点,监听地址path变化 可以实现跳转后回到顶部
const layoutWrapper = useRef()
  useEffect(()=>{
    layoutWrapper.current.scrollTop = 0
    // console.log(layoutWrapper.current.scrollTop)
  },[props.location.pathname])

2. 详情页面跳转回来滚动到原来位置

// 跳转详情页面前记录点击的那个节点的id,并存储在sessionStorage,不会丢失,便于跳转回来的时候获取
const goVideoDetails = id => {
    router.push({pathname: '/videodetails', query: {id}})
    sessionStorage.setItem('scrollId', id)
  }

// 判断是否要回到指定位置
// 如果是其他页面调整过来就清除sessionStorage,如果是通过返回方式回到该页面,就获取保存的节点,并滚动到该位置,直接用scrollIntoView()这个方法
  useEffect(()=>{
    if(history.action === 'PUSH'){
      sessionStorage.removeItem('scrollId')
      return
    }
    let id = sessionStorage.getItem('scrollId')
    console.log(id)
    document.getElementById(id).scrollIntoView()
  },[])
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值