近来很忙,学了一波react,特来记一笔,分享下react-router的使用方式

第一步引入内部组件

  1. import {Route,BrowserRouter as Router,Switch,Link } from "react-router-dom"

1)配置路由文件,一个路由对应一个组件,平级路由

  1. import SelfHeader from './components/pc/selfHeder'
  2. import ModuleParts from './components/pc/modulePart'
  3. import PCAddModule from './components/pc/addModules'
  4. import detail from './components/pc/detail'
  5. class App extends Component {
  6. render() {
  7. return (
  8. <div className="App">
  9. {/* pc */}
  10. <SelfHeader/>
       <Link to='/' className="clearfix">addModule</Link>
       <Link to='/addModule' className="clearfix">addModule</Link>
  1. <Router>
  2. <Switch >
  3. <Route exact path="/" component={ModuleParts}></Route>
  4. <Route path="/addModule" component={PCAddModule}></Route>
  5. {/*
  6. <Route path="/usercenter" component={PCUserCenter}></Route> */}
  7. </Switch >
  8. </Router>
  9. </div>
  10. );
  11. }
  12. }
  13. export default App;

可以看到Link就是路由触发标签,相当于angularJS的ui-sref,vue中的route-link,在react中我们可以把Route组件当作是一个容器,对应装载入组件,类似于angularJS的ui-view(ui-router),vue中的route-view

2)路由的嵌套

经常遇到的情况是需要使用到路由嵌套,就是父子级路由

在angularJS(mvc)中我们会使用多个views,例如:

  1. define(['app'], function (myapp) {
  2. myapp.config(['$stateProvider', '$urlRouterProvider',
  3. function ($stateProvider, $urlRouterProvider) {
  4. $stateProvider.state('editor', {
  5. url: '/editor',
  6. //templateUrl: 'html/login.html',
  7. //constroller: 'loginCtrl',
  8. //resolve: {
  9. // deps: $requireProvider.requireJS(['js/ctrls/login.js'])
  10. //}
  11. views: {
  12. "main": {
  13. templateUrl: 'html/editor.html',
  14. controller: 'editorCtrl',
  15. }
  16. }
  17. });
  18. }
  19. ]);
  20.  
  21. })

在vue2.0中这样的,不要忘记在父级组件中加上一个<router-view/>

  1. {
  2. path: '/v_next_tick',
  3. name: 'v_next_tick',
  4. component: VNextTick,
  5. children:[
  6. { path: '/aaa',
  7. name: 'aa',
  8. component: aa,}
  9. ],
  10. meta:{
  11. tabNum: 0
  12. }

在react中,下面的addModules组件承接就是上面例子中的addModules组件

  1. class addModules extends Component {
  2. constructor(props){
  3. super(props)
  4. this.state= {
  5. a:33
  6. }
  7. };
  8. render () {
  9. return (
  10. <div className="add-module-wrapper">
  11.           <Link to={`${this.props.match.url}/ee/22`} className="clearfix">detailBtn</Link>
  12. <Route exact path={`${this.props.match.url}`} component={detail}></Route>
  13. <Route path={`${this.props.match.url}/ee/:id`} component={detail}></Route>
  14. <Link to='/' className="clearfix">addModule</Link> {/*返回顶级默认路由对应页面*/}
  15. </div>
  16. )
  17. }
  18. }
  19. export default addModules;

  

a)需要补充说明的是在react中子级路由是随父级组件一起配置的

react-router4.0的使用的更多相关文章

  1. [web前端] react router4.0 登录后返回之前浏览页面(回到来源页)

    本文链接:https://blog.csdn.net/zeroyulong/article/details/81911704困扰了好久的问题,最终还是在官方文档上找到了答案(看英文文档真心难受啊~~) ...

  2. Android 工程集成React Native 0.44 注意点

    当前(2017年5月22日 )React Native开发相当火爆,但是搜索下来,没有最新版本0.44集成的教程,因此尝试了一下如何集成到Android原生工程中去.本篇旨在记录出现的问题以及应对方式 ...

  3. React Native 0.50版本新功能简介

    React Native在2017年经历了众多版本的迭代,从接触的0.29版本开始,到前不久发布的0.52版本,React Native作为目前最受欢迎的移动跨平台方案.虽然,目前存在着很多的功能和性 ...

  4. 盘点 React 16.0 ~ 16.5 主要更新及其应用

    目录 0. 生命周期函数的更新 1. 全新的 Content API 2. React Strict Mode 3. Portal 4. Refs 5. Fragment 6. 其他 7. 总结 生命 ...

  5. 新手级配置 react react-router4.0 redux fetch sass

    前言 最近公司来了几个实习生,刚好我手头没什么要紧事,然后领导让我带他们学习react, 为下一个react项目做基础. 然后随手写了几个demo,帮助他们了解正经项目如何去构建配置项目. 现在分享出 ...

  6. react native 0.55.4 rctsrwebsocket会崩溃的问题解决 直接原文覆盖

    //// Copyright 2012 Square Inc.//// Licensed under the Apache License, Version 2.0 (the "Licens ...

  7. react native 0.50与OC交互 && Swift与RN交互

    新公司也打算做rn,还是得捡起来再度学习.开撸! react native一个版本一个样子,之前写的rn与iOS交互系列在最新版本中有点出入(0.50.4版本).今天填一下坑. 首先上npm版本,re ...

  8. react native 0.56.0版本在windows下有bug不能正常运行

    react native的0.56.0版本在windows下有bug不能正常运行请init 0.55.4的版本 react-native init MyApp --version 0.55.4 注意v ...

  9. React Native 0.56.1初始化项目运行出现错误(Module `AccessibilityInfo` does not exist in the Haste module map)

    当使用react-native init myApp初始化项目时,出现以下错误 出现以上错误的原因是因为0.56.1版本初始化项目就有问题,请见 https://github.com/facebook ...

  10. router4.0

    https://blog.csdn.net/sinat_17775997/article/details/69218382 React Router 4.0 实现路由守卫   https://www. ...

随机推荐

  1. Vysor安装

    Vysor安装     Vysor安装    

  2. 安装完DevExpress14.2.5,如何破解它呢?

    DevExpress是一个界面控件套件,提供了一系列的界面控件套件的DotNet界面控件.DevExpress开发的控件有很强的实力,不仅功能丰富,应用简单,而且界面华丽,更可方便订制,方便开发人员开 ...

  3. js中的deom ready执行的问题

    一开始我想到这,DOMContentLoaded,不兼容, <!DOCTYPE html> <html> <head> <meta charset=" ...

  4. Drawing house

    截图如下: 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> & ...

  5. spring aop 的理解

    spring aop的相关概念(所有的概念都是为了生成代理类这个过程所需要的信息的抽象): 1.Targer:目标对象.被代理的对象. 2.Advice:增强/通知.就是为目标对象扩展的功能.分为前置 ...

  6. mysql 函数 事务

    mysql 中提供了许多内置函数 CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符.一个多字节字符算作一个单字符. 对于一个包含五个二字节字符集, LENGTH()返回 ...

  7. oracle 统计sql

    最近在研究项目时发现如下sql, select 3 agentOfGCount, 0 workingCount, 0 restingCount, 0 busyingCount, 0 connectin ...

  8. 安装 Java 6

    从服务器下载 Linux 64位 jdk 到本地.下载地址:\\192.167.100.225\share\Tool\JAVA\jdk-6u34-linux-x64.bin 给安装文件添加执行权限 $ ...

  9. 在本地设置 http-proxy 代理 (前后端分离)

    1. 利用package.json 安装nodejs,创建package.json文件:内容如下 "dependencies": { "http-proxy": ...

  10. js 在IOS系统微信浏览器内如何动态给title赋值

    var body = document.getElementsByTagName('body')[0]; document.title = title; var iframe = document.c ...