对于锚点定位来说,主要涉及这两个部分:
设置锚点,为页面中的某个组件添加id属性
点击链接,跳转到指定锚点处
例如:
// 锚点组件
function AnchorComponent() {...此时就需要实现锚点定位和目录的联动效果:
点击目录时,自动滚动到对应的章节
滚动页面时,自动高亮正在浏览的章节
目录导航组件
目录导航本身是一个静态组件,我们通过props传入章节数据:
function...SSR支持
在Next.js等SSR场景下,客户端脚本会延后加载,页面初次渲染时目录联动会失效。...在使用了服务端渲染(SSR)的框架如Next.js等情况下,实现锚点定位和目录联动也会有一些不同。...但是在Next.js的SSR环境下就会有问题:
点击目录链接时,页面不会滚动。
这是因为在服务端,我们无法获取组件的ref,所以锚点元素不存在,自然无法定位。
滚动页面时,目录高亮也失效。