React缓存(获取历史路由/堆栈)

在React应用中,为实现页面返回后保持原有数据,本文介绍了如何利用路由历史记录来模拟Keep-Live效果。通过存储详情页的查询条件,并在重新进入时恢复这些条件,达到页面缓存的目的。在寻找解决方案的过程中,提及了从评论区获取的获取上一页面路由的方法,并尝试了自定义历史堆栈,最终选择在Layout组件中监听路由变化,并通过context传递,使子组件能够根据路由变化做出响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天收到一个bug说是页面详情返回之后页面应该保持原本的数据样子,我一想这不就是keep-live吗

于是乎,去搜React的Keep-Live怎么实现,看到一位大佬封装的组件https://blog.youkuaiyun.com/zz130428/article/details/128275281

有点看不懂,后来想到一条思路,判断上一个页面的路由是不是详情页的路由,然后提前把页面的查询条件存储起来,如果进入这个页面时候的上个路由时详情页的,那就拿到存储起来的条件去渲染页面,达到一个缓存的效果。

问题来了,找了半天也没找到怎么拿到上一个页面的路由,知道在这里的评论区看到一位大佬的回复https://www.saoniuhuo.com/question/detail-2390072.html

是我无知了!

然后,找了一个自定义保存历史堆栈的例子,我,行不通,也有点看不懂。

我心想,算了,我自己写吧,想了一通是这么实现的

  1. 首先layout组件里监听路由变化
const [pathHistory, setPathHistory] = useState([]);
const { pathname } = useLocation();
  useEffect(() => {
    pathHistory.unshift(pathname);
}, [pathname]);
  1. 然后在layout通过context传递下去
  1. 最后在用到的组件中监听变化然后做相应处理即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值