美文网首页
react-router-dom

react-router-dom

作者: 灯光树影 | 来源:发表于2018-10-21 11:28 被阅读0次

一、什么是前端路由

在我看来,前端路由和网络上的路由器功能很像。前端路由也是进行分发操作,只不过其分发的是页面跳转请求。

二、使用

一般在最上层组件中使用前端路由。

// ...
import { Route, BrowserRouter } from 'react-router-dom'
class App extends Component{
  render(){
    return (
      <Provider store={store}>
        {//...}
        <BrowserRouter>
          <Route path='/' component={Home}></Route>
        </BrowserRouter>
      </Provider>
    )
  }
}

上面代码Route中的path就是请求的路径,在浏览器输入项目根路径,即可进入Home组件定义的页面。

path特性是使用正则表达式进行匹配的,所以,上面请求,/details也会跳转到Home页面。

如果需要路径完全相同时才匹配,比如请求路径/details不能匹配/,只能匹配/details,则需要添加exact特性。

<Route path='/' component={Home}></Route>

上面代码只有请求路径为/才起作用。
在页面跳转时,常常涉及页面传参的问题。

  • 方式一

    • 路由设置
    <Route path='/detail/:id' exact component={Detail}></Route>
    

    上面代码表示在请求路径/detail/id时,传递参数id

    • 跳转请求设置
     import { Link } from 'react-router-dom';
     <Link to = "detail/1"></Link>
    

    上面代码请求detail/1路径,匹配路由后,id等于1

    • 获取参数
    this.props.match.params.id
    

    上面代码存在Detail组件中,用于获取路由参数

  • 方式二

    • 路由设置
    <Route path='/detail' component={Detail}></Route>
    
    • 请求设置
    import { Link } from 'react-router-dom';
    <Link to = "/detail?id=1" ></Link>
    
    • 获取参数
    this.props.location.search
    

    上面代码存在Detail组件中,获取路由参数。不同方式一的是,这里获取的值为?id=1,所以,需要进行字符串的分割。

相关文章

网友评论

      本文标题:react-router-dom

      本文链接:https://www.haomeiwen.com/subject/bbtbzftx.html