React嵌套路由

当我们打开大部分网站的首页时,页面上会展示一个顶栏、一个侧边栏和一个list,当选中某条数据点击,就会跳转到详细画面。
一般采用如下格式的嵌套路由:

<Router history={hashHistory}>
  <Route path="/" component={App}>
    <Route path="/repos" component={Repos}/>
    <Route path="/about" component={About}/>
  </Route>
</Router>

但是,报warning:
React Router v4: Component and Children in the same route

查看本地安装react和react路由的版本:
npm info react(我的是@16.7.0)
npm info react-router(我的是@4.3.1)

https://stackoverflow.com/questions/46025494/react-router-v4-component-and-children-in-the-same-route
介绍的修正方法:

对于开头说及的功能的实现:
src\routes\App.js

import React, {Component} from 'react';
import {BrowserRouter as Router, Route} from 'react-router-dom';
import List from './routes/List';

class App extends Component {
    render() {
        return (
            <Router>
                <Route path="/list" component={List}/>
            </Router>
        );
    }
}

export default App;

src\routes\List.js

import React,{Component} from 'react';
import {BrowserRouter as Router, Switch, Route, Link} from 'react-router-dom';
import Documentation from "./Documentation";

const showDocumentationDetail = (props) =>{
    return (<Documentation id={props.match.params.id}></Documentation>)
};
class List extends Component {
    render(){
        return(
            <Router>
                <Switch>
                    <Route path="/list/:id" render={(props)=>showDocumentationDetail(props)}></Route>
                    <div>
                        <ul>
                            <li><Link to='/list/1'>list detail1</Link></li>
                            <li><Link to='/list/2'>list detail2</Link></li>
                            <li><Link to='/list/3'>list detail3</Link></li>
                        </ul>
                    </div>
                </Switch>
            </Router>
        )
    }
}


export default List;

src\routes\Documentation.js

import React, { Component } from 'react';

class Documentation extends Component {
    constructor(props){
        super(props);
    }
    render() {
        return(
            <h1>Documentation{this.props.id}</h1>
        )
    }
}

export default Documentation;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值