【发布时间】:2020-04-13 20:44:17
【问题描述】:
所以我正在尝试为我的单页应用创建一个导航,该导航将平滑滚动到页面的部分。
我希望我的导航在页面顶部带有链接,当用户单击时,它们会将它们平滑地向下滚动到页面的部分。我也希望这样,例如,如果用户直接转到链接 website.com/about,它将平滑滚动到该部分,就像您在导航组件上单击 about 一样。
我了解react-router-dom 是如何用于路由页面的,但我对如何使它用于此特定目的感到困惑。
这可以通过 HashRouter 实现吗?
这是我目前拥有的代码:
function Header() {
return (
<>
<Link to="/">Hero</Link>
<Link to="/">About</Link>
<Link to="/">Contact</Link>
</>
);
}
function Hero() {
return (
<section>
<h1>Hero Section</h1>
</section>
);
}
function About() {
return (
<section>
<h1>About Section</h1>
</section>
);
}
function Contact() {
return (
<section>
<h1>Contact Section</h1>
</section>
);
}
export default function App() {
return (
<div className="App">
<BrowserRouter>
<Header />
<Hero />
<About />
<Contact />
</BrowserRouter>
</div>
);
}
我还提供CodeSandBox,感谢分叉! :)
【问题讨论】:
-
有一个组件叫
react-scroll。我没有尝试过,但它看起来像你正在寻找的:npmjs.com/package/react-scroll -
您是否考虑过使用常规锚标签(
<a href="#about">About</a>)并设置页面的 cssscroll-behavior: smooth? -
@Jordan 在反应中有一个
<ScrollView>- 为什么不使用它? -
@terrymorse 我不想使用外部包。
-
@RachelGallen 我很确定
ScrollView是 React Native 的东西,不是吗?
标签: javascript reactjs react-router