我在 nextjs(getServerSideProps) 中使用服务器端渲染和 usewr 来获取数据并将其加载到无限滚动列表中。当用户向后或向前导航时,我想记住滚动位置和已加载到列表中的数据。目前,当使用浏览器的后退和前进按钮导航时,整个页面会再次重新加载,包括对服务器的请求。
我不认为useswr 处理ssr 上的缓存,所以我考虑将滚动位置+ 数据存储到cookie 中,然后可以在SSR 期间访问这些cookie。但是我不确定如何正确处理浏览器状态,例如如果用户向后导航几次然后再次前进,或者他在会话期间的不同时间导航到同一页面。这很容易变得难以跟踪。
我知道状态机,但到目前为止,我一直只是使用上下文挂钩和 cookie 在 nextjs 中的客户端和服务器之间共享数据。
当用户向后或向前导航时,在 nextjs 中处理缓存/恢复滚动位置 + ssr 动态数据的好方法是什么?