1. import React from 'react';
  2. import DataList from './data'
  3. import Tr from './Tr'
  4. // import One from '../One'
  5. import User from '../User'
  6. import Two from '../Two'
  7. import NotFound from '../NotFound';
  8. import {Redirect,NavLink,Route,Switch} from 'react-router-dom';
    //Redirect 重定向标签 NavLink路由跳转标签 Route显示路由的窗口 Switch用来保证路由窗口只显示一个路由标签 用来包裹Route标签
  9. class Tab extends React.Component{
  10. render(){
  11. return (
  12. <div>
  13. {
  14. <div>
              //路由书写的规则 exact是用来精确匹配 component={组件名}
  15. <NavLink to='/two/companies'>two</NavLink>
  16. <NavLink to='/one/users'>one</NavLink>
  17. <Switch>
  18. <Redirect exact from='/' to='/one/companies' />
  19. <Route path='/one/:type?' component={User}/>
  20. <Route path='/two/:id?' component={Two}/>
  21. <Route component={NotFound}></Route>
  22. </Switch>
  23. </div>
  24. }</div>
  25. )
  26. }
  27. }
  28.  
  29. export default Tab;

子路由:

  1. import React from 'react';
  2. import axios from 'axios';
  3. import OneTwo from './OneTwo'
  4. import {Switch,NavLink,Route} from 'react-router-dom';
  5. import NotFound from './NotFound'
  6. class User extends React.Component{
  7. constructor(props){
  8. super(props);
  9. this.state = {
  10. list : []
  11. }
  12. };
  13. componentDidMount(){ //组件挂载以后函数 通过this.props.match.params获取路由传参的值。
  14. let {type} = this.props.match.params;
  15. this.getData(type);
  16. };
  17. getData(id){
  18. axios.get('http://localhost:4000/'+id)
  19. .then((res)=>{
  20. this.setState({
  21. list:res.data
  22. })
  23. })
  24. };
  25. componentWillReceiveProps(){ //组件将更新props的值
  26. let {type} = this.props.match.params;
  27. this.getData(type);
  28. }
  29. render(){
  30. let {list} = this.state;
  31. return (
  32. <div>
  33. {list.map((item)=>{
  34. return (
  35. <div key={item.id}>
                      //路由字符串的写法拼接写法 对象写法在下面
  36. <NavLink to={this.props.match.url+'/'+item.id}>{item.name}</NavLink>
  37. </div>
  38. )
  39. })}
  40. <Switch>
                //组件该显示的位置要放出循环外
  41. <Route path="/one/users/:userid" component={OneTwo}/>
  42. </Switch>
  43. </div>
  44. )
  45. }
  46. }
  47.  
  48. export default User;

详情组件:

  1. import React from 'react';
  2. import axios from 'axios';
  3. class OneTwo extends React.Component{
  4. constructor(props){
  5. super(props);
  6. this.state = {
  7. list : {}
  8. }
  9. }
  10. getData(id){
        //将路由传来的id进行匹配拿到数据
  11. axios.get('http://localhost:4000/users/'+id)
  12. .then((res)=>{
  13. this.setState({
  14. list: res.data
  15. })
  16. })
  17. }
  18. componentDidMount(){
  19. let {userid} = this.props.match.params;
  20. this.getData(userid);
  21. };
  22. componentWillReceiveProps(){
  23. let {userid} = this.props.match.params;
  24. this.getData(userid);
  25. }
  26. render(){
  27. let {list} = this.state;
  28. return (
  29. <div>
              //枚举对象返回一个key值数组
  30. {Object.keys(list).map((item)=>{
  31. return (
  32. <div key={item}>
  33. {item}:{list[item]}
  34. </div>
  35. )
  36. })}
  37. </div>
  38. )
  39. }
  40. }
  41.  
  42. 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. MATLAB与C语言对比实例:随机数生成

    MATLAB与C语言对比实例:随机数生成 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.整型随机数生成函数 1.C语言程序 int intrand ...

  2. SudokuGame 记软工第二次作业

    整体概况 1.描述编写整体程序正确过程(含关键代码) 2.整体心路历程及新知分析 3.效能分析.构建之法及整体耗时时间表 4.一些心得体会 GitHub 链接如下: 1.[基础作业BIN文件(最新版) ...

  3. python collection模块

    一.模块的认识 定义:模块就是我们把装有特定功能的代码进行归类的结果. 说明:从代码编写的单位来看我们的城西,从小到大:一条代码 -> 语句块 - >代码块(函数.类)-> 模块. ...

  4. Nginx 的 TCP 负载均衡介绍

    Nginx除了以前常用的HTTP负载均衡外,Nginx增加基于TCP协议实现的负载均衡方法. HTTP负载均衡,也就是我们通常所有“七层负载均衡”,工作在第七层“应用层”.而TCP负载均衡,就是我们通 ...

  5. 【SDOI2017】天才黑客

    [SDOI2017]天才黑客 这题太神了. 先模Claris 大神的题解. 首先我们要将边转换为点.如果暴力连边就会有\(m^2\)的边,于是我们考虑优化建图. 难点在于快速得到两个边的串的\(lcp ...

  6. python六十七课——网络编程(基础知识了解)

    网络编程: 什么是网络编程? 网络:它是一种隐形的媒介:可以将多台计算机使用(将它们连接到一起) 网络编程:将多台计算机之间可以相互通信了(做数据交互) 一旦涉及到网络编程,划分为两个方向存在,一方我 ...

  7. Python 抖音机器人,论如何在抖音上找到漂亮小姐姐?

    只有想不到,没有做不到,最近抖音风靡好友圈,马上就有技术宅本着“代码改变世界”的理念开始了搞事之路. 需要注意的事,漂亮不漂亮没有明确的界限,每个人都有每个人的审美,只有外表而没有心灵的美也是空洞的. ...

  8. Spring将Bean导入IOC容器

    @Import 注解可以普通类导入到 IoC容器中. 想要让一个普通类接受 Spring 容器管理,有以下方法 使用 @Bean 注解 使用 @Controller @Service @Reposit ...

  9. UVA129-Krypton Factor(搜索剪枝)

    Problem UVA129-Krypton Factor Accept:1959  Submit:10261 Time Limit: 3000 mSec  Problem Description 通 ...

  10. Hive窗口函数

    参考地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+WindowingAndAnalytics 环境准备: CRE ...