博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
react 路由 react-router-dom
阅读量:4307 次
发布时间:2019-06-06

本文共 3157 字,大约阅读时间需要 10 分钟。

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 (         
{
          //路由书写的规则 exact是用来精确匹配 component={组件名}
two
one
}
) }}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 (            
{list.map((item)=>{ return (
                  //路由字符串的写法拼接写法 对象写法在下面
{item.name}
) })}
            //组件该显示的位置要放出循环外
) }}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 (
          //枚举对象返回一个key值数组 {
Object.keys(list).map((item)=>{ return (
{item}:{list[item]}
) })}
) }}export default OneTwo;

感觉就和vue一样

转载于:https://www.cnblogs.com/l8l8/p/9470921.html

你可能感兴趣的文章
PING检查网络是否畅通
查看>>
李宁-2015年7月13日-个人文档
查看>>
C# 通过URL获取图片并显示在PictureBox上的方法
查看>>
矩阵学习摘记,欢迎指正
查看>>
2018.08.02 hdu1558 Segment set(并查集+计算几何)
查看>>
2019.03.29 NOIP训练 友好国度(点分治+容斥)
查看>>
实验1.1
查看>>
2015 多校第三场
查看>>
CSS基础
查看>>
浅蓝色设计类网站模板
查看>>
QT中的pro文件
查看>>
幂等和高并发在电商系统中的使用
查看>>
手机操控全站仪安卓版 测量员.app
查看>>
mysql 模块使用
查看>>
解决android中Layout文件下的xml文件配好后,R类中不能自动生成相应代码
查看>>
[iOS] photoKit获取所有照片
查看>>
下载安装webstrom及激活
查看>>
Android Studio 之 NDK篇
查看>>
【ASP】简单Url编码和Url解码实例
查看>>
怎样基于谷歌地图的Server缓存公布Image Service服务
查看>>