react-router4.x 动态路由以及get传值

这个版本比较旧,在官方最新版本的文档里没找到对应的知识点,结论就是:还是用的旧的版本的写法。
App.js

import logo from './assets/images/logo.svg';
import './assets/css/index.css'
import React from 'react';
import {
  BrowserRouter as Router,
  Switch,
  Route,
  Link
} from "react-router-dom";
import Home from './components5/Home';
import News from './components5/News';
import Product from './components5/Product';
import Content from './components5/Content';
import ProductContent from './components5/ProductContent';

export default function App() {
  return (
    <Router>
      <div>
        <header className='title'>
          <Link to="/">Home</Link>
            
          <Link to="/news">News</Link>
          
          <Link to="/product">Product</Link>
        </header>

        <Route exact path='/' component={Home}/>
        <Route  path='/news' component={News}/>
        <Route  path='/product' component={Product}/>
        <Route  path='/content/:aid' component={Content}/>
        <Route  path='/productContent' component={ProductContent}/>
      </div>
    </Router>
  );
}


 

Home.js

import React, {Component} from 'react';

class Home extends Component {
    constructor(props) {
        super(props);
        this.state = {  }
    }
    render() { 
        return (  
            <div>
                这里是Home组件
            </div>
        );
    }
}
 
export default Home;

News.js

import React, {Component} from 'react';
import '../assets/css/index.css'
import {
    BrowserRouter as Router,
    Switch,
    Route,
    Link
} from "react-router-dom";

class News extends Component {
    constructor(props) {
        super(props);
        this.state = {
            list:[
                {
                    aid:1,
                    title:"新闻111",
                },
                {
                    aid:2,
                    title:"新闻222",
                },
                {
                    aid:3,
                    title:"新闻333",
                },
                {
                    aid:4,
                    title:"新闻444",
                }
            ]
          }
    }
    render() { 
        return (  
            <div>
                这里是News组件
                <ul className='list'>
                    {
                      this.state.list.map((value,key)=>{
                          return (
                            <li key={key}>
                                 <Link to={`/content/${value.aid}`}>{value.title}</Link>
                            </li>
                          )    
                      })
                    }
                </ul>
            </div>
        );
    }
}
 
export default News;

Content,js

import React, {Component} from 'react';

class Content extends Component {
    constructor(props) {
        super(props);
        this.state = {  
         
        }
    }
    //生命周期函数
    componentDidMount(){
        //获取动态路由的传值
        console.log(this.props.match.params.aid);
    }
    render() { 
        return (  
            <div>
                这里是Content组件
            </div>
        );
    }
}
 
export default Content;

Product.js

import React, {Component} from 'react';
import {
    BrowserRouter as Router,
    Switch,
    Route,
    Link
} from "react-router-dom";

class Product extends Component {
    constructor(props) {
        super(props);
        this.state = { 
            list:[
                {
                    aid:1,
                    title:"商品111",
                },
                {
                    aid:2,
                    title:"商品222",
                },
                {
                    aid:3,
                    title:"商品333",
                },
                {
                    aid:4,
                    title:"商品444",
                }
            ]
         }
    }
    render() { 
        return (  
            <div>
                这里是Product组件
                <ul className='list'>
                    {
                      this.state.list.map((value,key)=>{
                          return (
                            <li key={key}>
                                 <Link to={`/productContent?aid=${value.aid}`}>{value.title}</Link>
                            </li>
                          )    
                      })
                    }
                </ul>
            </div>
        );
    }
}
 
export default Product;

Product.js

import React, {Component} from 'react';
// url模块来解析url地址
import url from 'url';

class ProductContent extends Component {
    constructor(props) {
        super(props);
        this.state = {  
         
        }
    }
    //生命周期函数
    componentDidMount(){
       //获取get传值
       console.log(url.parse(this.props.location.search,true));  
       
       var query = url.parse(this.props.location.search,true).query;

       console.log(query);
    }
    render() { 
        return (  
            <div>
                这里是ProductContent组件
            </div>
        );
    }
}
 
export default ProductContent;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值