Ang*_*gad 2 reactjs react-router
我是 React 的新手,正在尝试使用嵌套路由创建布局。这是我的场景
在浏览器中访问 URL 时,登录页面和仪表板页面会正确加载,但对于 /dashboard/profile,浏览器会转到空白页面,而不是将其加载到仪表板组件中。
索引.js
ReactDOM.render(
<BrowserRouter>
<App />
</BrowserRouter>,
document.getElementById('root'));
Run Code Online (Sandbox Code Playgroud)
应用程序.js
class App extends Component {
render() {
return (
<div>
{/* <Switch> */}
<Route exact path='/' component={SignIn}/>
<Route exact path='/dashboard' component={Dashboard}/>
{/* </Switch> */}
</div>
);
}
}
export default App;
Run Code Online (Sandbox Code Playgroud)
仪表板.js
class Dashboard extends React.Component {
render() {
const { classes } = this.props;
return (
<React.Fragment>
<CssBaseline />
<div className={classes.root}>
<Header classes={classes} open={this.state.open} click={this.handleDrawerOpen} />
<Sidebar classes={classes} open={this.state.open} click={this.handleDrawerClose} />
<main className={classes.content}>
<div className={classes.appBarSpacer} />
*********I expect profile component to load here
but when I access the URL /dashboard/profile I get a new blank page*********
Route path="/dashboard/profile" exact component={Profile} />
</main>
</div>
</React.Fragment>
);
}
}
Run Code Online (Sandbox Code Playgroud)
在执行子路由时,您需要exact从仪表板路由(存在于Switch)中移除道具。
这是您的用例的最小实现:
import React, { Component } from "react";
import "./styles.css";
import {
NavLink,
Redirect,
Route,
BrowserRouter as Router,
Switch
} from "react-router-dom";
const App = () => (
<Router>
<div className="App">
<ul>
<li>
<NavLink to="/login">Login</NavLink>
</li>
<li>
<NavLink to="/dashboard">Dashboard</NavLink>
</li>
</ul>
<Switch>
<Route exact path="/login" component={Login} />
<Route path="/dashboard" component={Dashboard} />
</Switch>
</div>
</Router>
);
const Login = () => <span>Login Page</span>;
const Dashboard = () => {
return (
<div>
<div>Dashboard Page</div>
<NavLink to="/dashboard/profile">Go to profile</NavLink>
<div>
<Route exact path="/dashboard/profile" component={Profile} />
</div>
</div>
);
};
const Profile = () => {
return <span>Profile Page</span>;
};
export default App;
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到工作示例:https : //codesandbox.io/s/z3py3672v3
| 归档时间: |
|
| 查看次数: |
1380 次 |
| 最近记录: |