react-router基本使用笔记

是第三方开发的路由

react-router官方文档

react-router
react-router-dom 这个会依赖上面的包,所以直接安装这个就好了

router 三种渲染方式
BrowserRouter是路由的根组件,只能接收一个子元素,定义了路由作用的范围
import {BrowserRouter/*history模式*/,Route/*一个路由的配置项*/} from ' react-router-dom'

···
<BrowserRouter>
   /*BrowserRouter是路由的根组件,只能接收一个子元素,定义了路由作用的范围*/
    <div className="app">
    
    <Link to="/one">one</Link>
    <Link to="/two">two</Link>
    
    
    <Router path="/one"/*匹配路径*/ component={One}/*展示组件*/ />
    <Router path="/two" component={Two} />
    ....
    </app>
</BrowserRouter>

Route标签渲染组件的方式,有三种

1.component

<Router path="/two" component={Two} />

2.render

<Router path="/two" render={()=>{
    return(
        <mark>test</test>
    )
}} />

<Router path="/two" render={()=>{
    return <Two data={this.state.title}>      //这样的写法更容易做数据的传递
}} />

3.children

<Router path="/two" children={()=>{  //  path不管为啥值,里面的组件都会展示
    return(
        <mark>test</test>
    )
}} />
Router 上的属性
 path:string|string[]  //匹配数组中的路径
 exact  完全匹配才展示
 strict:bool  默认多了/少了/无所谓  (本来是要设置后不匹配 这个功能没实现)
 sensitive  大小写是否敏感
history (实现编程式路由)

使用component方式实例化组件时,router实例化的时候会给组件传值
props上面的值

props: 
    match:
      path: 配置的path
      url: 地址栏的地址
      isExact: 是否完全匹配
      params: 动态路由的参数
    history:
      push: 
      replace:
      go:
      goBack:
      goForward: 
    location:
      state: 用于传参的
 path="/one/:id"   参数为必传    this.props.
 <Link to={{pathname:'one' state:{id: 1}}} > </Link>           参数非必传写法

使用render或children 也要实现获得路由对象

render(props)=><One {...props} />
children(props)=><One {...props} />

children存在的意义: (虽然它的这个结构不管path设置什么值,都显示为什么还有用,而不是直接显示组件)
为了获得路由的props

路由其他属性

basename
getUserConfirmation

getUserConfirmation{(massage,callback){
     
}}

keyLength 包裹长度

Link 没有样式
换成 navLink

<NavLink to="/faq" activeClassName="selected">
  FAQs
</NavLink>

重定向:

<Router path="/" exact render={()=>{
   reuturn <Redirect to="/movie"> 
} />

匹配404
Switch从上往下匹配,只匹配一个后面的不再匹配

<Switch>
...
<Router compontent={NotFind}>
</Switch>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值