react基础知识-9.react-router

9.1 安装

npm install react-router-dom -s

9.2 基本使用

react-router中奉行一切皆组件的思想,以下都是以组件形式存在

路由器-Router
链接-Link
路由-Route
独占-Switch
重定向-Redirect
import React,{Component} from "react"
import {BrowserRouter as Router,Route,Link} from "react-router-dom"

export default class RouterPage extends Component{
  render(){
    return(
      <div>
        <h3>RouterPage</h3>
        <Router>
          <Link to="/">首页</Link>
          <Link to="/user">用户中心</Link>
        {/* 根据exact,实现精准匹配 */}
        <Route 
          exact 
          path="/" 
          component ={HomePage}
          // children ={()=><div>children</div>}
          // render ={()=><div>render</div>}
        />
        <Route path="/user" component = {UserPage}/>
        </Router>
      </div>
    )
  }
}

class HomePage extends Component{
  render(){
    return(
      <div>
        <h3>HomePage</h3>
      </div>
    )
  }
}

class UserPage extends Component{
  render(){
    return(
      <div>
        <h3>UserPage</h3>
      </div>
    )
  }
}

9.3 Route渲染内容的三种方式

Route渲染优先级:children>component>render
这三种方式互斥,你只能用其中一种

  • children:func

有时候,不管location是否匹配,你都需要渲染一些内容,这个时候你可以用 children,除了不管location是否匹配都会渲染之外,其他方法和render完全一样

  • render:func

当你使用render时,你只是调用了个函数,只有当location匹配的时候渲染

  • component:component

只有当location匹配的时候渲染

9.4 404页面

设定一个没有path的路由在路由列表最后面,表示一定匹配

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

export default class RouterPage extends Component{
  render(){
    return(
      <div>
        <h3>RouterPage</h3>
        <Router>
          <Link to="/">首页</Link>
          <Link to="/user">用户中心</Link>
        {/* 根据exact,实现精准匹配 */}
          <Switch>
            <Route 
              exact 
              path="/" 
              component ={HomePage}
              // children ={()=><div>children</div>}
              // render ={()=><div>render</div>}
            />
            <Route path="/user" component = {UserPage}/>
            <Route component = {EmptyPage}/>
          </Switch>
        </Router>
      </div>
    )
  }
}

class HomePage extends Component{
  render(){
    return(
      <div>
        <h3>HomePage</h3>
      </div>
    )
  }
}

class UserPage extends Component{
  render(){
    return(
      <div>
        <h3>UserPage</h3>
      </div>
    )
  }
}

class EmptyPage extends Component{
  render(){
    return(
      <div>
        <h3>EmptyPage-404</h3>
      </div>
    )
  }
}

代码下载地址:https://gitee.com/JingYaBei/my-app.git

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值