,使得ref对象在可视区域内。...自动高亮
实现自动高亮也很简单,通过监听滚动事件,计算章节元素的偏移量,判断哪个章节在可视区域内,并更新active状态:
function App() {
const [activeChapter...const rect = element.getBoundingClientRect();
// 判断是否在可视区域内
if (rect.top...,根据位置判断是否在可见区域内,如果是就更新activeChapter状态,从而触发目录的高亮效果。...但是在Next.js的SSR环境下就会有问题:
点击目录链接时,页面不会滚动。
这是因为在服务端,我们无法获取组件的ref,所以锚点元素不存在,自然无法定位。
滚动页面时,目录高亮也失效。