原因很明显。在main.js中为您的路线指定了
Public组件的Route路径,并指定了精确
exactpath='/',然后在Public组件中为另一个组件匹配
Routes。因此,如果路由路径为
/signup,则最初的路径不精确,因此
Public不会呈现组件,因此没有subRoutes会。
将您的路由配置更改为以下内容
main.js
const Main = () => { return ( <main> <Switch> <Route path='/' component={Public} /> <Route path='/admin' component={Admin} /> </Switch> </main> );};export default Mainpublic.js
const Public = () => { return ( <Switch> <Route exact path='/' component={Greeting} /> <Route path='/signup' component={SignupPage} /> <Route path='/login' component={LoginPage} /> </Switch> );};同样,当您指定嵌套路由时,它们应相对于父路由,例如,如果父路由为
/home,然后在您希望编写的子路由中
/dashboard。应该写成
<Route path="/home/dashboard" component={Dashboard}甚至更好
<Route path={`${this.props.match.path}/dashboard`} component={Dashboard}


