import React from 'react';
import DataList from './data'
import Tr from './Tr'
// import One from '../One'
import User from '../User'
import Two from '../Two'
import NotFound from '../NotFound';
import {Redirect,NavLink,Route,Switch} from 'react-router-dom';
//Redirect 重定向标签 NavLink路由跳转标签 Route显示路由的窗口 Switch用来保证路由窗口只显示一个路由标签 用来包裹Route标签
class Tab extends React.Component{
render(){
return (
<div>
{
<div>
          //路由书写的规则 exact是用来精确匹配 component={组件名}
<NavLink to='/two/companies'>two</NavLink>
<NavLink to='/one/users'>one</NavLink>
<Switch>
<Redirect exact from='/' to='/one/companies' />
<Route path='/one/:type?' component={User}/>
<Route path='/two/:id?' component={Two}/>
<Route component={NotFound}></Route>
</Switch>
</div>
}</div>
)
}
} export default Tab;

子路由:

import React from 'react';
import axios from 'axios';
import OneTwo from './OneTwo'
import {Switch,NavLink,Route} from 'react-router-dom';
import NotFound from './NotFound'
class User extends React.Component{
constructor(props){
super(props);
this.state = {
list : []
}
};
componentDidMount(){ //组件挂载以后函数 通过this.props.match.params获取路由传参的值。
let {type} = this.props.match.params;
this.getData(type);
};
getData(id){
axios.get('http://localhost:4000/'+id)
.then((res)=>{
this.setState({
list:res.data
})
})
};
componentWillReceiveProps(){ //组件将更新props的值
let {type} = this.props.match.params;
this.getData(type);
}
render(){
let {list} = this.state;
return (
<div>
{list.map((item)=>{
return (
<div key={item.id}>
                  //路由字符串的写法拼接写法 对象写法在下面
<NavLink to={this.props.match.url+'/'+item.id}>{item.name}</NavLink>
</div>
)
})}
<Switch>
            //组件该显示的位置要放出循环外
<Route path="/one/users/:userid" component={OneTwo}/>
</Switch>
</div>
)
}
} export default User;

详情组件:

import React from 'react';
import axios from 'axios';
class OneTwo extends React.Component{
constructor(props){
super(props);
this.state = {
list : {}
}
}
getData(id){
    //将路由传来的id进行匹配拿到数据
axios.get('http://localhost:4000/users/'+id)
.then((res)=>{
this.setState({
list: res.data
})
})
}
componentDidMount(){
let {userid} = this.props.match.params;
this.getData(userid);
};
componentWillReceiveProps(){
let {userid} = this.props.match.params;
this.getData(userid);
}
render(){
let {list} = this.state;
return (
<div>
          //枚举对象返回一个key值数组
{Object.keys(list).map((item)=>{
return (
<div key={item}>
{item}:{list[item]}
</div>
)
})}
</div>
)
}
} export default OneTwo;

感觉就和vue一样

react 路由 react-router-dom的更多相关文章

  1. react第十四单元(react路由-react路由的跳转以及路由信息)

    第十四单元(react路由-react路由的跳转以及路由信息) #课程目标 理解前端单页面应用与多页面应用的优缺点 理解react路由是前端单页面应用的核心 会使用react路由配置前端单页面应用框架 ...

  2. react第十三单元(react路由-react路由的跳转以及路由信息) #课程目标

    第十三单元(react路由-react路由的跳转以及路由信息) #课程目标 熟悉掌握路由的配置 熟悉掌握跳转路由的方式 熟悉掌握路由跳转传参的方式 可以根据对其的理解封装一个类似Vue的router- ...

  3. 【React 8/100】 React路由

    React路由 React路由介绍 现代的前端应用大多数是SPA(单页应用程序),也就是只有一个HTML页面的应用程序.因为它的用户体验更好.对服务器压力更小,所以更受欢迎.为了有效的使用单个页面来管 ...

  4. react路由配置(未完)

    React路由 React推了两个版本 一个是react-router 一个是react-router-dom 个人建议使用第二个 因为他多了一个Link组件 Npm install react-ro ...

  5. react router @4 和 vue路由 详解(七)react路由守卫

    完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 12.react路由守卫? a.在之前的版本中,React Router 也提供了类似的 ...

  6. 【react router路由】<Router> <Siwtch> <Route>标签

    博客 https://www.jianshu.com/p/ed5e56994f13?from=timeline 文档 http://react-guide.github.io/react-router ...

  7. [React] 10 - Tutorial: router

    Ref: REACT JS TUTORIAL #6 - React Router & Intro to Single Page Apps with React JS Ref: REACT JS ...

  8. 七天接手react项目 系列 —— react 路由

    其他章节请看: 七天接手react项目 系列 react 路由 本篇首先讲解路由原理,接着以一个基础路由示例为起点讲述路由最基础的知识,然后讲解嵌套路由.路由传参,最后讲解路由组件和一般组件的区别,以 ...

  9. react路由案例(非常适合入门)

    前面已经已经讲过一次路由   稍微有些复杂   考虑到有些同学刚接触到   我准备了一个简单的demo   就当自己也顺便复习一下 data.js const data = [ { name: 'Ta ...

  10. react路由深度解析

    先看一段代码能否秒懂很重要 这是app.js  全局js的入口 import React from 'react' import { render } from 'react-dom' import ...

随机推荐

  1. 【2018.05.11 智能驾驶/汽车电子】非技术向:关于Simulink和AutoSar的几种观点

    最近看到几篇关于Simulink及AutoSar的Blog和Paper,感觉比较有意思,转载备忘之. 1. 看衰Simulink及AutoSar From:Tumiz的技术天地 https://blo ...

  2. Java 8 新特性:5-Supplier、IntSupplier、BinaryOperator接口

    (原) 这个接口很简单,里面只有一个抽象方法,没有default和静态方法. /* * Copyright (c) 2012, 2013, Oracle and/or its affiliates. ...

  3. 数据库的未来:ORM+LINQ+RX

    数据库的未来:ORM+LINQ+RX 数据        操作         异步 ORM       LINQ        RX

  4. elasticSearch学习安装

    资料: 1.Elasticsearch学习,请先看这一篇! https://blog.csdn.net/laoyang360/article/details/52244917 2. linux下ela ...

  5. centos7下kubernetes(2。kubernetes---start,重要概念)

    Cluster cluster是计算,存储和网络资源的集合,kubernetes是利用这些资源运行各种基于容器的应用 Master Master是cluster的大脑,他的主要职责是调度,即决定应用在 ...

  6. centos7下kubernetes(1。kubernetes---start)

    kubernetes官网:https://kubernetes.io/docs/home/ 也是怀着不情愿的心情,要开始kubernetes了,本身是非常热爱技术,尤其是容器技术,可能是最近有点累和懈 ...

  7. Interrupt

    Interrupt ,给线程发送一个中断信号 给t1线程发送了中断信号,t1对线程的中断信号判断后,跳出循环,线程t1运行结束 public class Demo { public static vo ...

  8. css3 object-fit详解

    上传头像的时候遇到了头像变形的问题,最后通过object-fit: cover完美解决了.这个CSS属性可以达到最佳最完美的居中自动剪裁图片的功能. object-fit理解 CSS3 backgro ...

  9. centos下安装 glances 的问题

    开始想安装htop 然后 yum installhtop 没有 yum searchhtop 也没有  然后上github 发现一个比htop还华丽的东西. Glances 大概这个样子的. 可以一览 ...

  10. DBCA静默方式建库

    使用DBCA的图形方式建库实在有诸多不便,但是使用静默方式建库就比较方便了,一个命令即可搞定. 使用dbca安装oracle数据库实例也有差不多两种方法:一种就是根据模板文件进行安装,在上文中提到了在 ...