![](/img/trans.png)
[英]Why are my nested route components not rendering in react-router-dom 6?
[英]Navigate between main content components using react-router-dom within nested components
在这种情况下,有一个App
组件有一个Header
组件,如果用户登录,则呈现一个 header ,否则呈现一个。 还有一个Access
组件,如果用户未登录,则呈现Landing
组件;如果用户已登录,则呈现Dashboard
。如果登录,用户可以访问所有路由。我如何使用react-router-dom
呈现组件用户在Dashboard
组件上? 目前, LeftNav
应该始终在视图中,而main-content
className
中的组件根据路由切换。 目前只有LeftNav
和MainContent
组件在"/"
上工作,如果导航到/test
或/test/new neither the
LeftNav or
TestComponent 都不会render, however the
Header component is still rendering correctly. What am I doing wrong here or how is this toggling between
component is still rendering correctly. What am I doing wrong here or how is this toggling between
的切换?
import { BrowserRouter, Route } from "react-router-dom";
import Header from "./Header";
import Access from "./Access";
class App extends Component {
render() {
return (
<div>
<BrowserRouter>
<div>
<Header />
<Route exact path="/" component={Access} />
</div>
</BrowserRouter>
</div>
);
}
};
export default App;
////////////////////////////////
import Landing from "./Landing";
import Dashboard from "./Dashboard";
class Access extends Component {
renderContent() {
switch (this.props.auth) {
case null:
return;
case false:
return (
<Landing />
);
default:
return (
<Dashboard />
);
}
}
render() {
return (
<div>
{this.renderContent()}
</div>
);
}
}
export default Access;
////////////////////////////////
import { Switch, Route } from "react-router-dom";
import LeftNav from "./dashboard/LeftNav";
import MainContent from "./dashboard/MainContent";
import TestContent from "./dashboard/TestContent";
import TestContentNew from "./dashboard/TestContentNew";
class Dashboard extends Component {
render() {
return (
<div>
<div className="dashboard-wrapper" style={dashboardWrapper}>
<LeftNav />
<div className="main-content">
<Switch>
<Route path="/" component={MainContent} />
<Route path="/test" component={TestContent} />
<Route path="/test/new" component={TestContentNew} />
</Switch>
</div>
</div>
</div>
);
}
};
export default Dashboard;
应用程序中的主Route
只有在完全匹配“/”时才会匹配并呈现路由,因此当您导航到另一条路径时,它会停止匹配。
我看不到您将auth
作为道具传递给Access
的位置,但由于它处理身份验证并呈现您的实际路线,您可以简单地呈现它而不是App
中的Route
。 它将始终由路由器呈现并显示登录页面或仪表板。
import { BrowserRouter, Route } from "react-router-dom";
import Header from "./Header";
import Access from "./Access";
class App extends Component {
render() {
return (
<div>
<BrowserRouter>
<div>
<Header />
<Access />
</div>
</BrowserRouter>
</div>
);
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.