sno*_*cat 2 javascript reactjs react-router react-router-dom
我有一个 React 应用程序,其中的 URL 使用 React Router 定义:
const App: React.FC = (): JSX.Element => {
return (
<Router>
<Switch>
<Redirect exact from="/" to="/rules" />
<Route
exact
path={["/rules", "/rules/:placeId"]}
component={LandingPage}
/>
<Route
exact
path={["/route", "/route/:start/:end"]}
component={RoutePage}
/>
</Switch>
</Router>
);
};
Run Code Online (Sandbox Code Playgroud)
如果 url 包含这样的哈希部分,我想允许用户转到文档的特定手风琴部分/rules/someplace#accordion-3
我有一个返回相关手风琴的组件,它们都有一个 id:
const CategoryDisplay: React.FC<Props> = (props) => {
...
return (
<>
<Accordion
id={`category-${accordion.id}`}/>
</>
);
};
export default CategoryDisplay;
Run Code Online (Sandbox Code Playgroud)
当我打开带有锚点的 URL 时(就像/rules/someplace#accordion-3我已经在页面上一样),一切正常并且滚动到该元素。但是,在页面初始加载时,此行为不起作用。
仅在页面加载后我将如何滚动到该元素?
我认为这个想法是在组件安装后使用效果滚动到适当的组件。也许是这样的:
React.useEffect(() => {
const anchor = window.location.hash.slice(1);
if (anchor) {
const anchorEl = document.getElementById(anchor);
if (anchorEl) {
anchorEl.scrollIntoView();
}
}
}, []);
Run Code Online (Sandbox Code Playgroud)
笔记:
| 归档时间: |
|
| 查看次数: |
2754 次 |
| 最近记录: |