我的任务是打开Main products
的/
,并打开Misc products
上/misc
具有相同的布局(页眉和页脚),并打开About
上/about
没有布局
import React from 'react';
import {render} from 'react-dom';
import {BrowserRouter as Router, Route, Switch, Link, Redirect} from 'react-router-dom'
const About = () => "About";
const Error = () => "404";
class AdvertsList extends React.Component {
render() {
let {match} = this.props;
return (
<div className="container">
<header>Header</header>
<main>
<nav>
<Link to="/">Main products</Link> #
<Link to="/misc">Misc products</Link> #
<Link to="/about">About</Link>
</nav>
<div className="content">
<Switch>
<Route path="/" exact={true} render={() => "Main products"}/>
<Route path="/misc" render={() => "Misc products"}/>
<Redirect to="/" />
</Switch>
</div>
</main>
<footer>Footer</footer>
</div>
)
};
}
class App extends React.Component {
render() {
return (
<Router>
<Switch>
<Route path="/" exact={true} component={AdvertsList}/>
<Route path="/about" component={About}/>
<Route path="*" component={Error}/>
</Switch>
</Router>
);
}
}
render(<App/>, document.querySelector("#app"));
如果Main products
打开/
并且/about
链接也可以正常工作/misc
,尽管进行了所有exact
设置,但链接不会404
返回,我无法访问其他产品。
由于确切的属性,您的第一个路由仅解析为根,它不会解析任何其他路由。所以/misc
自动跳到你的错误路线。
您可以将misc
路由添加为组件上的另一个路由App
组件。或通过
<Route path="/(|misc)" exact={true} component={AdvertsList} />
这将同时解析/
和/misc
到 AdvertsList ,而确切的属性仍然解析为 true。您可以通过添加额外的管道来添加其他路由,例如|misc|settings|varia
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句