react 路由 react-router-dom
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的更多相关文章
- react第十四单元(react路由-react路由的跳转以及路由信息)
第十四单元(react路由-react路由的跳转以及路由信息) #课程目标 理解前端单页面应用与多页面应用的优缺点 理解react路由是前端单页面应用的核心 会使用react路由配置前端单页面应用框架 ...
- react第十三单元(react路由-react路由的跳转以及路由信息) #课程目标
第十三单元(react路由-react路由的跳转以及路由信息) #课程目标 熟悉掌握路由的配置 熟悉掌握跳转路由的方式 熟悉掌握路由跳转传参的方式 可以根据对其的理解封装一个类似Vue的router- ...
- 【React 8/100】 React路由
React路由 React路由介绍 现代的前端应用大多数是SPA(单页应用程序),也就是只有一个HTML页面的应用程序.因为它的用户体验更好.对服务器压力更小,所以更受欢迎.为了有效的使用单个页面来管 ...
- react路由配置(未完)
React路由 React推了两个版本 一个是react-router 一个是react-router-dom 个人建议使用第二个 因为他多了一个Link组件 Npm install react-ro ...
- react router @4 和 vue路由 详解(七)react路由守卫
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 12.react路由守卫? a.在之前的版本中,React Router 也提供了类似的 ...
- 【react router路由】<Router> <Siwtch> <Route>标签
博客 https://www.jianshu.com/p/ed5e56994f13?from=timeline 文档 http://react-guide.github.io/react-router ...
- [React] 10 - Tutorial: router
Ref: REACT JS TUTORIAL #6 - React Router & Intro to Single Page Apps with React JS Ref: REACT JS ...
- 七天接手react项目 系列 —— react 路由
其他章节请看: 七天接手react项目 系列 react 路由 本篇首先讲解路由原理,接着以一个基础路由示例为起点讲述路由最基础的知识,然后讲解嵌套路由.路由传参,最后讲解路由组件和一般组件的区别,以 ...
- react路由案例(非常适合入门)
前面已经已经讲过一次路由 稍微有些复杂 考虑到有些同学刚接触到 我准备了一个简单的demo 就当自己也顺便复习一下 data.js const data = [ { name: 'Ta ...
- react路由深度解析
先看一段代码能否秒懂很重要 这是app.js 全局js的入口 import React from 'react' import { render } from 'react-dom' import ...
随机推荐
- Python爬虫-02:HTTPS请求与响应,以及抓包工具Fiddler的使用
目录 1. HTTP和HTTPS 1.1. HTTP的请求和响应流程:打开一个网页的过程 1.2. URL 2. 客户端HTTP请求 3. Fiddler抓包工具的使用 3.1. 工作原理 3.2. ...
- 【车】汽车X40保养
参考文档: [养车成本]小保养331元,奔腾X40养车成本调查
- 【Linux基础】linux下修改ls显示的时间格式
1.修改ls显示格式 ls -l --time-style '+%Y/%m/%d %H:%M:%S' drwxr-x--- edwetl edwetl // :: arc_test ls -l --t ...
- xpath 解析 及案例
xpath解析 编码流程: 1.实例化一个etree对象,且将页面源码加载到该对象中 2.使用xpath函数,且在函数中必须作用一个xpath表达式进行标签的定位 3.使用xpath进行属性和文本的提 ...
- go语言中如何模拟100个IP同时并发访问服务器,每个ip要重复访问1000次。每个Ip一分钟之内只能访问一次
package main import ( "time" "sync" "fmt" "sync/atomic" ) ty ...
- 浅析 PHP 中的 Generator
浅析 PHP 中的 Generator Miss Wang php开发案例 前天 何为 Generator 从 PHP 5.5 开始,PHP 加入了一个新的特性,那就是 Generator,中文译为生 ...
- [matlab] 12.Optimization Tool的使用
1.quadprog 二次规划的函数 Matlab 中二次规划的数学模型可表述如下 其中 H是把目标函数二次项部分进行实对称矩阵, f是线性函数的列向量. 例求解二次规划 得到 h=[4,-4;-4, ...
- Go web编程学习笔记——未完待续
1. 1).GOPATH设置 先设置自己的GOPATH,可以在本机中运行$PATH进行查看: userdeMacBook-Pro:~ user$ $GOPATH -bash: /Users/user/ ...
- mysql备份命令
mysql备份命令如下: 备份多个数据库可以使用如下命令: mysqldump -uroot -p123456 --databases test1 test2 test3 > /home/tes ...
- nginx让所有的http地址重定向到https
问:为什么让所有的http都重定向到https呢?答:因为这样会使网站更安全些. 那么我是如何在nginx配置,让输入http://www.youcongtech.com或者youcongtech.c ...