32_嵌套路由
如何编写路由效果:
1.编写路由组件
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。2.在父路由组件中指定
路由链接:<NavLink>
路路由:<Route>
import React, {Component} from 'react'
import {Switch, Route, Redirect} from 'react-router-dom'
import MyNavLink from '../components/my-nav-link'
import News from './news'
import Message from './message'
export default class Home extends Component {
render() {
return (
<div>
<h2>home route component</h2>
<div>
<ul className='nav nav-tabs'>
<li>
<MyNavLink to='/home/news'>News</MyNavLink>
</li>
<li>
<MyNavLink to='/home/message'>Message</MyNavLink>
</li>
</ul>
<div>
<Switch>
<Route path='/home/news' component={News}/>
<Route path='/home/message' component={Message}/>
<Redirect to='/home/message'/>
</Switch>
</div>
</div>
</div>
)
}
}
home.jsx
import React, {Component} from 'react'
export default class News extends Component {
state = {
newsArr: [
'news111',
'news222',
'news333',
'news444',
]
}
render() {
return (
<ul>
{
this.state.newsArr.map((c, index) => <li key={index}>{c}</li>)
}
</ul>
)
}
}
news.jsx
import React, {Component} from 'react'
export default class Message extends Component {
state = {
messages: []
}
componentDidMount() {
//模拟发送ajax请求,异步获取数据
setTimeout(() => {
const messages = [
{id: 1, title: 'message001'},
{id: 3, title: 'message003'},
{id: 5, title: 'message005'}
]
// 更新状态
this.setState({messages})
}, 1000)
}
render() {
return (
<ul>
{
this.state.messages.map((m, index) => (
<li>
<a href="###">{m.title}</a>
</li>
))
}
</ul>
)
}
}
message.jsx
更多精彩

