Reactjs 在Chrome上刷新时页面加载滚动失败,但在Firefox上没有

Reactjs 在Chrome上刷新时页面加载滚动失败,但在Firefox上没有,reactjs,google-chrome,Reactjs,Google Chrome,加载后,我的React应用程序设计为滚动到url的哈希片段中指定的某个位置。页面实际上不是滚动的,而是页面上的一个div 这在第一次访问页面时正确发生,例如,当您将url粘贴到地址栏并按enter键时。但是在Chrome和Opera上,如果你随后刷新页面,它不会滚动,你将留在页面顶部。在Firefox和Safari上,刷新页面时它会滚动 这里有一个代码沙盒 编辑:复制说明 打开后,等待它生成,然后在Chrome中访问此url 从模式对话框中选择“天主教”。页面将滚动到指定的定位点。刷新页面。页

加载后,我的React应用程序设计为滚动到url的哈希片段中指定的某个位置。页面实际上不是滚动的,而是页面上的一个div

这在第一次访问页面时正确发生,例如,当您将url粘贴到地址栏并按enter键时。但是在Chrome和Opera上,如果你随后刷新页面,它不会滚动,你将留在页面顶部。在Firefox和Safari上,刷新页面时它会滚动

这里有一个代码沙盒

编辑:复制说明

打开后,等待它生成,然后在Chrome中访问此url

从模式对话框中选择“天主教”。页面将滚动到指定的定位点。刷新页面。页面将不会滚动


使用Firefox重复此操作。刷新后页面将滚动。

您可以在文档准备就绪后尝试滚动:

componentDidUpdate() {
    let tag = this.props.location.hash.replace('#', '');
    if (tag ) {
        let node = ReactDOM.findDOMNode(this.refs[tag ]);
        if (node) {
            node.scrollIntoView();
        }
    }
}
使用页面中的引用

<h4 ref='catholic'>Catholic</h4>
天主教的
您可以在文档准备好后尝试滚动:

componentDidUpdate() {
    let tag = this.props.location.hash.replace('#', '');
    if (tag ) {
        let node = ReactDOM.findDOMNode(this.refs[tag ]);
        if (node) {
            node.scrollIntoView();
        }
    }
}
使用页面中的引用

<h4 ref='catholic'>Catholic</h4>
天主教的
我认为可能您的componentDidUpdate在componentDidMount在您的问题阅读器组件上运行之前运行,如果您的视图未呈现,您无法滚动到该视图,您需要在componentDidMount上调用
this.scrollToElement()

您还可以使用
window.location.hash
获取当前哈希,并保存一些
props.history.location.pathname.replace(//\//g,“”).replace(//\./g,”)


希望能有所帮助。

我想可能您的componentDidUpdate在您的问题阅读器组件上的componentDidMount之前运行,如果您的视图未呈现,您无法滚动到该视图,您需要在componentDidMount上调用
this.scrollToElement()

您还可以使用
window.location.hash
获取当前哈希,并保存一些
props.history.location.pathname.replace(//\//g,“”).replace(//\./g,”)


希望能有所帮助。

你对自己的问题太模糊了,你不能指望人们对整个项目进行筛选,找出问题所在。要么得到一个具有相同行为的最小示例,要么至少向我们展示您首先是如何尝试完成滚动的。你做了什么使它滚动?我们可以测试什么样的哈希值来查看它的运行情况?请创建,否则我们无法帮助您..问题列表检查,在您的应用程序中的CSS选择器下面,提到的CSS选择器有一个位置:固定和高度设置仅为115px,因此您可以在此页面上滚动…您对您的问题太模糊了,你不能期望人们对整个项目进行筛选并找出问题所在。要么得到一个具有相同行为的最小示例,要么至少向我们展示您首先是如何尝试完成滚动的。你做了什么使它滚动?我们可以测试什么样的散列来查看它的运行情况?请创建,否则我们无法帮助您..问题列表检查,在您的应用程序的CSS选择器下面,提到的CSS选择器有position:fixed和height set仅为115px,因此您可以在此页面上滚动…谢谢,但这并没有为我解决问题。它帮你修好了吗?此外,我还注意到另一个奇怪之处。当我没有首先点击codesandbox源代码的链接而点击了上面的codesandbox站点预览链接时,它实际上在Chrome中工作正常。然后我在打开预览之前打开了源代码,但它不起作用。此外,我还模糊地记得在项目早期尝试“scrollIntoView”时,我的iPhone出现了问题。还有,还有,findDOMNode不推荐使用。谢谢,但这并没有为我解决它。它帮你修好了吗?此外,我还注意到另一个奇怪之处。当我没有首先点击codesandbox源代码的链接而点击了上面的codesandbox站点预览链接时,它实际上在Chrome中工作正常。然后我在打开预览之前打开了源代码,但它不起作用。此外,我还模糊地记得在项目早期尝试“scrollIntoView”时,我的iPhone出现了问题。另外,findDOMNode也不推荐使用。