1.创建react项目

npm install -g create-react-app 全局环境

create-react-app my-app 创建项目

cd my-app 进入项目

npm start 启动

React-router介绍

什么是路由?

路由是根据不同的 url 地址展示不同的内容或页面。

React Router

一个针对React而设计的路由解决方案、可以友好的帮你解决React components 到URl之间的同步映射关系。

安装低版本react-router

卸载高版本react react-dom

npm uninstall react react-dom --save-dev

安装react-router2.0版本 安装axios

npm i react@15 react-dom@15 react-router@2 axios --save-dev

2.准备React组件

import React from 'react'

import ReactDOM from 'react-dom’

import { Router, Route, Link, hashHistory} from ‘react-router’

//react-router中定义了history这个属性 用于方便管理路由的方向

//browserHistory/ hashHistory

3.link

定义链接的组件,类似于a标签。

<Link to=“/users>users</Link> {this.props.children} //==相当于路由试图的容器

4.定义路由 index.js

 render (<Router history={hashHistory}>

 <Route path=”/" component={Demo}>

 <Route path="/home" component={Header}></Route>

 <Route path="/about" component={Con}></Route>

 </Route>

 </Router>, document.getElementById('root'))

<Route>组件有如下属性:

path(string): 路由匹配路径。(没有path属性的Route 总是会 匹配);

Component==设置该路径要加载的组件

索引 IndexRoute

指定默认情况下加载的子组件。你可以把IndexRoute想象成某个路径的index.html。

例如:

<Route path="/" component={App}> <IndexRoute component={Index}/> </Route>

样式

当路径匹配时会触发activeStyle属性。

const ACTIVE = { color: 'red' }

普通链接

<Link to="/users" activeStyle={ACTIVE}>users</Link>

地址栏传参

定义:

<Link to=“/users/1>users</Link> <Route path="/user/:xxxx" component={User}/>

取得参数:

this.props.params.xxxx==1

路径跳转(编程式路由)

在事件中进行路由路径跳转

hashHistory.push('/home')

绝对路径和重定向

相对路径:

不以/开头的路径,匹配时就会相对于父组件的路径。

<Route path="inbox" component={Inbox}> <Route path="messages/:id" component={Message} /> </Route>

访问路径:/inbox/messages/:id

绝对路径:

以/开头的路径。如果在嵌套路由中使用会跳出父组件的影响。

<Route path="inbox" component={Inbox}> <Route path=“/messages/:id" component={Message} /> </Route>

访问路径:/messages/:id

重定向:

当路径匹配from的时候,自动重定向(跳转)到to的地址上面。

<Route path=”/index" component={index}> <Redirect from=”/index/a" to=“/other" /> </Route>

从 /index/a 跳转到 /other

重定向

<IndexRedirect to="/home"/>

查询符-query

定义:

<Route path="/user/:xxxx" component={User}/>

取得参数:

this.props.params.xxxx

例如:

<Link to={{pathname:'/list',query:{id:item.goodsID} }}> <Route path="/user" component={User}/> url:/user/10086?foo=bar

this.props.params.userId 是 10086

this.props.location.query.foo 是 bar

总结:

路由的各个组件的生命周期和普通的组件生命周期是一样的。路由根据不同的url来加载和卸载不同的组件

React 路由&脚手架的更多相关文章

  1. React/VUE 脚手架2.0和3.0

    react官方脚手架 npm install -g create-react-app create-react-app my-app cd my-app npm start 区别自己对比 vue2.x ...

  2. 自制的React同构脚手架

    代码地址如下:http://www.demodashi.com/demo/12575.html Web前端世界日新月异变化太快,为了让自己跟上节奏不掉队,总结出了自己的一套React脚手架,方便日后新 ...

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

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

  4. react路由的安装及格式和使用方法

    react路由的安装: 在要创建项目的目录命令窗里输入: cnpm install -g create-react-app create-react-app  项目名 在创建好的项目目录命令窗里输入: ...

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

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

  6. react路由嵌套

    所谓的嵌套路由就是在某些以及路由下面存在二级路由,这些二级路由除了公用一级路由导航模块外,还公用当前的二级路由的导航模块,也就是部分进行了切换,要实现嵌套路由,首先回顾之前的内容,实现基本的react ...

  7. react路由配置(未完)

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

  8. React路由-基础篇

    React-Router-DOM ReactRouter网址, 安装 -npmjs找到react-router-dom -yarn add react-router-dom 基本使用方法 1.创建一个 ...

  9. react 路由 react-router@3.2.1

    react路由,4.x的差异还是比较大,暂时还是3.x的版本 安装: npm install -S react-router@3.x 配置: import { Router, Route, hashH ...

随机推荐

  1. web设计_7_页面缺失图片或CSS的情况下仍然易读

    1. 在任何可能使用背景图片的地方应设置同样的颜色的背景色. 防止图片不能加载的情况下,页面内容同样保持较好可读性. 例如文字为白色,背景图为深色,如果不设置背景色,当背景图未成功加载, 而浏览器多数 ...

  2. Appium+python自动化(二十五)- 那些让人抓耳挠腮、揪头发和掉头发的事 - 获取控件ID(超详解)

    简介 在前边的第二十二篇文章里,已经分享了通过获取控件的坐标点来获取点击事件的所需要的点击位置,那么还有没有其他方法来获取控件点击事件所需要的点击位置呢?答案是:Yes!因为在不同的大小屏幕的手机上获 ...

  3. 入门MySQL——架构篇

    前言:  上篇文章我们介绍了入门MySQL的基本概念,看完上篇文章,相信你应该了解MySQL的前世今生了吧.本篇文章将带你从架构体系来学习MySQL.我认为学习MySQL架构体系应该是入门阶段必须的, ...

  4. ansible-yum

    #yum 需要在vim /etc/ansible/hosts里面给执行的主机配置 远程调用python的路径不知道为什么默认值认识python2.6.6 vim /etc/ansible/hosts ...

  5. Java经典编程题

    [程序1]   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?   //这是一个菲波拉契数列问题p ...

  6. eclipse的下载安装配置

    1.在eclipse官网下载与你电脑版本相对应的安装包.链接:https://www.eclipse.org/downloads/eclipse-packages/ 2.下载与eclipse版本相对应 ...

  7. 网站安装SSL证书成为影响SEO排名的重要因素之一

    百度谷歌先后发声明倡导站长们使用https链接,同样的网站,https站点要比http站点拥有更好的排名权重.https已经是网站SEO必须要考虑的环节之一了,而https的必要条件就是安装SSL证书 ...

  8. git常用指令整理

    git常用指令一览表 GIT指令 说明 git add . 将全部文件的内容加到Git索引以便执行commit. 这个指令不会检查文件夹中是否有文件被删除. 要注意的是,只有执行" git ...

  9. 带你剖析WebGis的世界奥秘----点和线的世界

    前言 昨天写了好久的博文我没保存,今天在来想继续写居然没了,气死人啊这种情况你们见到过没,所以今天重新写,我还是切换到了HTML格式的书写上.废话不多说了,我们现在就进入主题,上周我仔细研究了WebG ...

  10. 记忆化搜索模板题---leetcode 1155. 掷骰子的N种方法

    1155. 掷骰子的N种方法 这里有 d 个一样的骰子,每个骰子上都有 f 个面,分别标号为 1, 2, ..., f. 我们约定:掷骰子的得到总点数为各骰子面朝上的数字的总和. 如果需要掷出的总点数 ...