因此,我一直在使用 ScrollIntoView() 作为 Web 应用程序的一部分跳转到反应组件中的锚点。对于小页面,它可以正常工作,到达正确的位置并按预期运行。我有一个较大的页面,其中行为很奇怪。在加载时,跳转到锚点的位置低于它应该在半页或更多的位置。第一次单击指向任何锚点的链接时,包括相同的锚点,该锚点最终会以相似的数量出现在它应该在的位置之上。只要页面没有重新加载,之后的每次点击都可以完美运行。这是我的函数代码。它有一个 setTimeout ,因为我认为问题与页面加载有关,但没有效果。这是我的功能:
scrollToAnchor: function () {
let anchorName = this.props.location.hash || window.location.hash;
if (anchorName) {
anchorName = anchorName.replace("#", "");
let anchorElement = document.getElementById(anchorName);
if (anchorElement) {
window.setTimeout(anchorElement.scrollIntoView(true), 0);
}
} else {
window.scrollTo(0, 0);
}
},