react路由 -简单实现

api :https://reactrouter.com/web/api

项目结构:

 Details 和 List的路由及页面内容有接受参数的方式,在文章最后都有展示

1.安装依赖 

     npm install --save react-router-dom

2.Link跳转

    Nav/index.jsx

   导航高亮的处理点击菜单显示高亮: activeStyle={{ color:'red' }} activeClassName="active"

import React from 'react'
import { NavLink } from "react-router-dom"
import "./style.css"

export default class Nav extends React.Component{
    render(){
        return(
            <div className="nav">
                <ul>
                     <li>
                         <NavLink exact activeStyle={{fontWeight:"bold",color:"red"}} to='/'>首页</NavLink>
                    </li>
                    <li>
                        <NavLink exact activeStyle={{fontWeight:"bold",color:"red"}} activeClassName="active" to='/news'>新闻</NavLink>
                    </li>
                    <li>
                        <NavLink exact activeStyle={{fontWeight:"bold",color:"red"}} activeClassName="active" to='/news/sports'>体育</NavLink>
                    </li>
                    <li>
                        <NavLink exact activeStyle={{fontWeight:"bold",color:"red"}} activeClassName="active" to='/list/10001'>列表</NavLink>
                    </li>
                    <li>
                        <NavLink exact activeStyle={{fontWeight:"bold",color:"red"}} activeClassName="active" to='/details?name=123'>明细</NavLink>
                    </li>
                </ul>
            </div>
        )
    }
}

style.css

.nav ul{
    overflow: hidden;
    clear: both;
}
.nav ul li{
    float: left;
    margin: 0 20px;
}
.active{
    color:red;
}

3.配置views视图页面页面 每个页面引入Link

import React from 'react'
import Nav from '../Nav'
import qs from "querystring"

export default class Details extends React.Component{
    render(){
        return(
            <div>
                <Nav/>
                {qs.parse(this.props.location.search)['?name']}
                
                </div>
        )
    }
}
import React from 'react'
import Nav from '../Nav'

export default class Home extends React.Component{
    render(){
        return(
            <div>
                <Nav/>
                Home
            </div>
        )
    }

}
import React from 'react'
import Nav from '../Nav'

export default class List extends React.Component{
    render(){
        return(
            <div>
                <Nav/>
                List
            </div>
        )
    }

}
import React from 'react'
import Nav from '../Nav'

export default class News extends React.Component{
    render(){
        return(
            <div>
                <Nav/>
                News</div>
        )
    }
}
import React from 'react'
import Nav from '../Nav'

export default class Sports extends React.Component{
    render(){
        return(
            <div>
                <Nav/>
                Sports</div>
        )
    }
}

4.App.js配置路由文件

   精准匹配:exact strict

import React from 'react';
import { HashRouter as Router,Route,Switch} from 'react-router-dom'
import List from './views/List'
import Home from './views/Home'
import News from './views/News'
import Sports from './views/Sports'
import Details from './views/Details'

class App extends React.Component {

  render(){
    return (
      <Router>
      <Switch>
      <Route exact path='/' component={ Home }></Route>
          <Route exact strict path='/news' component={ News }></Route>
          <Route  path='/news/sports' component={ Sports }></Route>
          <Route  path='/list/:id' component={ List }></Route>
          <Route  path='/details' component={ Details }></Route>

          <Route render={ ()=><div>404 页面飞走了</div> }></Route>
          {/* <Route component={NotFound}></Route> */}
      </Switch>
    </Router>
    );
  }
}

export default App;

5.页面展示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值