React 路由&脚手架
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 路由&脚手架的更多相关文章
- 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 ...
- 自制的React同构脚手架
代码地址如下:http://www.demodashi.com/demo/12575.html Web前端世界日新月异变化太快,为了让自己跟上节奏不掉队,总结出了自己的一套React脚手架,方便日后新 ...
- 七天接手react项目 系列 —— react 路由
其他章节请看: 七天接手react项目 系列 react 路由 本篇首先讲解路由原理,接着以一个基础路由示例为起点讲述路由最基础的知识,然后讲解嵌套路由.路由传参,最后讲解路由组件和一般组件的区别,以 ...
- react路由的安装及格式和使用方法
react路由的安装: 在要创建项目的目录命令窗里输入: cnpm install -g create-react-app create-react-app 项目名 在创建好的项目目录命令窗里输入: ...
- react router @4 和 vue路由 详解(七)react路由守卫
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 12.react路由守卫? a.在之前的版本中,React Router 也提供了类似的 ...
- react路由嵌套
所谓的嵌套路由就是在某些以及路由下面存在二级路由,这些二级路由除了公用一级路由导航模块外,还公用当前的二级路由的导航模块,也就是部分进行了切换,要实现嵌套路由,首先回顾之前的内容,实现基本的react ...
- react路由配置(未完)
React路由 React推了两个版本 一个是react-router 一个是react-router-dom 个人建议使用第二个 因为他多了一个Link组件 Npm install react-ro ...
- React路由-基础篇
React-Router-DOM ReactRouter网址, 安装 -npmjs找到react-router-dom -yarn add react-router-dom 基本使用方法 1.创建一个 ...
- react 路由 react-router@3.2.1
react路由,4.x的差异还是比较大,暂时还是3.x的版本 安装: npm install -S react-router@3.x 配置: import { Router, Route, hashH ...
随机推荐
- 2019前端面试系列——Vue面试题
Vue 双向绑定原理 mvvm 双向绑定,采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty()来劫持各个属性的 setter.getter,在数 ...
- python基础学习(起步)
目录 python基础学习(起步) 变量 常量 变量的内存管理 python垃圾回收机制 变量的其他赋值方式 今日编程小题 本人能力有限,若有偏颇之处请读者大大不吝赐教! 祝大家每天都在成长! pyt ...
- js实现字符串转JSON格式
在浏览器前端实现字符串转JSON格式,有多种方法,总结如下: 方法1. js函数,eval() 语法: var obj = eval ("(" + txt + ")&qu ...
- 浅谈设计模式及python实现
设计模式及Python实现 设计模式是什么? Christopher Alexander:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样你就能一次又一次地使用 ...
- mysql是如何实现事务隔离以及MVCC详解
提到事务,你肯定会想到ACID(Atomicity.Consistency.Isolation.Durability,即原子性.一致性.隔离性.持久性),我们就来说说其中I,也就是"隔离性& ...
- 快速字符串匹配一: 看毛片算法(KMP)
前言 由于需要做一个快速匹配敏感关键词的服务,为了提供一个高效,准确,低能耗的关键词匹配服务,我进行了漫长的探索.这里把过程记录成系列博客,供大家参考. 在一开始,接收到快速敏感词匹配时,我就想到了 ...
- 解决报错:类型“System.Object”在未被引用的程序集中定义。必须添加对程序集“System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的引用
Razor视图引擎中,使用部分视图编译报错 类型“System.Object”在未被引用的程序集中定义.必须添加对程序集“System.Runtime, Version=4.0.0.0, Cultur ...
- Drawable与 Bitmap 转换总结
极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android Drawable 使用方法详解请看上篇文章. Drawable 使用方法详解 本篇 ...
- Android | Sqlite3
Android 数据库创建及使用: 创建: package he3.sd.dao; import android.content.Context; import android.database.sq ...
- git bash 初始化配置
这里只针对 windows 下,使用git 时的一些初始配置 1. git bash 安装 下载地址: https://git-for-windows.github.io/ 根据提示,一步步安装即可 ...