React 使用react-router-dom 中的嵌套路由实现详情页回退列表页不刷新效果

本文介绍了在React应用中如何实现嵌套路由,监听路由变化以保存和恢复滚动条位置。首先展示了如何配置父子路由,然后详细说明了在跳转到商品详情页面时如何保存滚动条高度,并在返回时恢复。最后,通过当前路径判断显示列表页或详情页,确保用户体验的连贯性。
摘要由CSDN通过智能技术生成

第一步嵌套路由

	{
      path: "/shopping/goods",
      element: <ShoppingGoods />, //list页面
      children: [{ path: "/shopping/goods/detail", element: <GoodsDetail /> }], //详情页面
    },

第二步监听路由(点击查看详情时需要保存当前滚动条高度)

{
      title: "操作",
      key: "operation",
      width: 100,
      render: (text) => (
        <span
          className="ac"
          onClick={() => {
            navigate(`/shopping/goods/detail?goodsNo=${text.goodsNo}`);
            //保存滚动条高度
            setScrollTop(document.getElementById("code").scrollTop)
            // setGoodsNo(text.goodsNo)
          }}
        >
          跳转商品详情
        </span>
      ),
    },
const { pathname } = useLocation(); //获取当前路径
 useEffect(() => {
 	//监听变化
   if(pathname === "/shopping/goods") {
    //设置滚动条高度
    document.getElementById("code").scrollTop = scrollTop
   }
  }, [pathname])

第三步通过当前路径判断 展示list 页 还是 detail页面(Outlet 是react-router-dom中的内容 相当于router-view)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值