javascript - 使用 ScrollToTop 和 HashRouter 修复 404。有小费吗?
问题描述
问题: 404页面的内容正在当前页面内容下方的所有页面上呈现。
问题的原因:我创建了一个组件,该组件在路由更改时将页面滚动到顶部。
import React, { useEffect } from 'react';
import { withRouter } from 'react-router-dom';
function ScrollToTop({ history, children }) {
useEffect(() => {
const unlisten = history.listen(() => {
window.scrollTo(0, 0);
});
return () => {
unlisten();
}
}, [history]);
return <>{ children }</>;
}
export default withRouter(ScrollToTop);
import React from 'react';
import { HashRouter, Route, Switch } from 'react-router-dom';
import ScrollToTop from './pages/Common/ScrollToTop';
import Home from './pages/Home';
import NotFound from './pages/NotFound';
import Login from './pages/User/Login';
import Register from './pages/User/Register';
function Routes() {
return (
<HashRouter>
<Switch>
<ScrollToTop>
<Route exact path="/" component={Home} />
<Route exact path="/login" component={Login} />
<Route exact path="/register" component={Register} />
<Route component={NotFound} />
</ScrollToTop>
</Switch>
</HashRouter>
);
}
export default Routes;
组件 ScrollToTop 不知何故与 Switch 组件混淆。我意识到删除 ScrollToTop 组件按预期工作。由于删除 ScrollToTop 是不可能的,有没有人有任何建议或任何解决方法?谢谢!
解决方案
推荐阅读
- python - Pandas DataFrame:将 CSV 列分散到多列
- android - 如何将鼠标点击的坐标从 Flickable 发送到 ListView?
- php - php和mysql从多个表中读取数据
- regex - 正则表达式匹配 URL 的所有子文件夹,除了一些特殊的子文件夹
- sql-server - 逻辑应用执行 SQL TO JSON 自动分块输出
- ruby-on-rails - Ruby rails 对象为 nil,但控制器逻辑表现得好像对象不是 nil
- javascript - 单子不是“flatMap”而是“flatUnit”?
- reactjs - 如何模拟使用文档对象的 React 组件?
- vbscript - 如何在循环中正确填充两个数组的字典?
- python - 为什么 scipy 的 genfromtxt 将 NaN 值读取为-1?