【发布时间】:2021-02-25 10:54:43
【问题描述】:
我有一个带有登录和搜索页面的简单网页。我在顶部还有一个导航栏,可以在两者之间切换。基本的App.js 如下所示:
const history = createBrowserHistory();
function App() {
return (
<Router history={history}>
<CustomLayout>
<Switch>
<BaseRouter/>
</Switch>
</CustomLayout>
</Router>
);
}
export default App;
现在,BaseRouter 和 CustomLayout 只是
const BaseRouter = () => (
<div>
<Route exact path={"/list"} component={ItemsList}/>
<Route path={"/login"} component={LoginForm}/>
</div>
);
export default BaseRouter;
和
const CustomLayout = ({children}) => {
return(
<>
<Navbar/>
{children}
</>
);
}
export default CustomLayout;
现在,导航栏看起来像这样
import React from "react";
import {Menu} from 'antd';
import {Link} from "react-router-dom";
const Navbar = () => {
return (
<div>
<Menu mode="horizontal" theme={"dark"}>
<Menu.Item key="list">
<Link to={"/list"}>List</Link>
</Menu.Item>
<Menu.Item key={"login"}>
<Link to={"/login"}>Sign in</Link>
</Menu.Item>
</Menu>
</div>
);
}
export default Navbar
让我们保持组件简单:
const Login = () => {
return (
<div>
login
</div>
);
}
export default Login
const List = () => {
return (
<div>
list
</div>
);
}
export default List
现在的问题是,当我单击导航栏中的链接时,即使路线发生变化,React 也不会重新渲染组件。我已经在 SO 上看到了数百个答案,但我仍然无法弄清楚。
注意
避免刷新或重新加载页面对我来说很重要。
编辑
奇怪的是,当我将 Router 更改为 BrowserRotuer 时,它工作正常,但我不能使用我自己的历史记录。
【问题讨论】:
标签: reactjs react-router antd