在页面顶部打开<Link>

bp1*_*123 4 react-router-v4

我正在使用React Router 4,当我使用<Link>新页面时,不会在页面顶部打开.我需要讲<Link>一些具体的内容吗?

<Link to="/mypage">My Page</Link>
Run Code Online (Sandbox Code Playgroud)

Ezr*_*boi 14

我知道我的答案可能与以前相似,但我只是想帮助那些使用React Hooks并且可能会遇到这个问题/答案的人......

useLayoutEffect(() => {
    window.scrollTo(0, 0)
});
Run Code Online (Sandbox Code Playgroud)

基本上,我的意思是,在window.scrollTo(0, 0)里面添加useLayoutEffect并且会正常工作。


Aar*_*ton 8

类似问题答案中,我找到了一个非常可靠的答案。无论如何,它对我有用,所以我想我会分享。

根据您的情况,在“ / mypage” window.scrollTo(0, 0);的组件中添加到componentDidMount函数。像这样:

import ...
export default class MyPage extends Component {
    constructor(props) {
        super(props);

        this.state = {
            ...
        };
    }

    componentDidMount() {
        window.scrollTo(0, 0);
    }

    render() {
        return (
            ...
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

Link组件将处理导航到新路径的过程,一旦安装了新组件,它将自动滚动到顶部。


小智 5

所以我找到了一个非常酷的解决方案.基本上你需要创建一个包装器组件(它将包裹Route),它只负责滚动到顶部.然后,您需要在路由器中使用包装器而不是路由器.完整的解决方案在这里: react-router在每次转换时滚动到顶部

向下滚动到它所说的位置:对于react-router v4

PS确保你的.babelrc中配置了对象 - rest-spread.这是一个链接:

https://babeljs.io/docs/plugins/transform-object-rest-spread/


归档时间:

查看次数:

5048 次

最近记录:

6 年,2 月 前