props.history.push('/') 没有转到页面顶部(需要功能组件)

Posted

技术标签:

【中文标题】props.history.push(\'/\') 没有转到页面顶部(需要功能组件)【英文标题】:props.history.push('/') does not go to top of page (need functional component)props.history.push('/') 没有转到页面顶部(需要功能组件) 【发布时间】:2021-03-03 10:29:48 【问题描述】:

我正在使用 React 构建一个网站,用户单击一个按钮进行注册。在该按钮的回调中,我使用props.history.push('/') 重定向到主页。

在注册页面中,他们必须稍微向下滚动,并且他们在页面上的位置会延续到主页。还有其他方法可以重定向到页面顶部吗?

【问题讨论】:

推送后为什么不developer.mozilla.org/en-US/docs/Web/API/Window/scrollTo? 我假设您使用的是 react-router。 react-router scroll to top on every transition 【参考方案1】:

下面的解决方案示例展示了如何使用它。这将使窗口在整个应用程序中自动滚动到顶部。信用未知 - 我从这里的某个地方得到它。

React 组件 - ScrollToTop:

import  useEffect  from "react";
import  withRouter  from "react-router-dom";

function ScrollToTop( history ) 
    useEffect(() => 
        const unlisten = history.listen(() => 
            window.scrollTo(0, 0);
        );
        return () => 
            unlisten();
        ;
    , [history]);

    return null;


export default withRouter(ScrollToTop);

显示我如何在我的应用中使用它的照片:

【讨论】:

谢谢!其他链接的问题使用类而不是功能组件,所以我认为这很有帮助并增加了价值,尽管问题可能仍然是重复的...... 虽然这似乎以某种方式覆盖了我的路由,也许这是我的设置,但是当我使用 react-router-dom 中的链接时,它似乎在快速切换到链接页面后将我送回主页 @EricHB - 我们必须查看您的代码。但是,我看不出与此相关的任何事情会导致该问题。我在我的应用程序中使用 Link 就好了。实际上,我使用相同的完全相同代码的两个应用程序都可以正常工作。

以上是关于props.history.push('/') 没有转到页面顶部(需要功能组件)的主要内容,如果未能解决你的问题,请参考以下文章

React-router v4 this.props.history.push(...) 不工作

ReactJs this.props.history.push() 不工作

在 React 中,渲染重定向总是比使用 this.props.history.push 更好吗?

React Router 4 和 props.history.push

this.props.history.push() 似乎不再适用于 React Router v4,有啥替代方案?

this.props.history.push 在刷新后工作