【发布时间】:2020-11-18 18:07:23
【问题描述】:
我学习了一些 React-router-dom,它有点工作,但是因为我有三个 Components 一个接一个,就像一个长页面。然后当我点击顶部菜单中的about 按钮时;
<Button variant="primary" onClick={() => history.push('/articles')}>
Articles
</Button>
<Button variant="primary" onClick={() => history.push('/stories')}>
Stories
</Button>
<Button variant="primary" onClick={() => history.push('/about')}>
About
</Button>
/about 页面已呈现但未滚动到,因为它的页码为 3。有什么方法可以自动滚动到该页面吗?
我的菜单不是固定的,但是每当用户向上滚动菜单时,当用户向下滚动菜单时,菜单就会消失,不会阻止内容。
看起来这三个组件组成了一个长页面
react router 或useHistory 中可能有内置的东西,还是我必须想办法让组件知道它们是从主菜单中召唤出来的?然后自己计算如何滚动变得可见。
我对 React Redux 知之甚少,我想我可以从菜单按钮调度和操作,mapStateToProp 监听组件中的操作,然后滚动可见。感觉就像一个糟糕的黑客不知道。
【问题讨论】:
-
我已经用其他解决方案更新了我的答案,请注意,如果它是一个类组件,您需要在 Button 元素内编写 this.onAboutPageClick 。而且 scrollIntoView 有很多选项来管理滚动行为
标签: reactjs scroll react-router-dom