前言
锚点目录定位功能在长页面和文档类网站中非常常见,它可以让用户快速定位到页面中的某个章节
如何在React中实现锚点定位和平滑滚动
目录自动高亮的实现思路
处理顶部导航遮挡锚点的解决方案
服务端渲染下的实现方案...自动高亮
实现自动高亮也很简单,通过监听滚动事件,计算章节元素的偏移量,判断哪个章节在可视区域内,并更新active状态:
function App() {
const [activeChapter...,如果是就更新activeChapter状态,从而触发目录的高亮效果。...但是在Next.js的SSR环境下就会有问题:
点击目录链接时,页面不会滚动。
这是因为在服务端,我们无法获取组件的ref,所以锚点元素不存在,自然无法定位。
滚动页面时,目录高亮也失效。...简单来说就是:
在服务端渲染时,读取路由参数,提前计算高亮状态
将高亮数据注入到响应中
客户端拿到注水的数据后渲染,不会出现高亮错位
实现步骤:
1.服务端获取参数和数据
// 在getServerSideProps