如何编写路由效果:

  1.编写路由组件

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

  2.在父路由组件中指定

    路由链接:<NavLink>

    路路由:<Route>

32_嵌套路由 随笔 第1张
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 32_嵌套路由 随笔 第3张
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 32_嵌套路由 随笔 第5张
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

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄