前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React中路由的使用

React中路由的使用

原创
作者头像
挥刀北上
修改2020-08-07 17:54:49
1.4K0
修改2020-08-07 17:54:49
举报
文章被收录于专栏:Node.js开发Node.js开发

在react中配置前端路由一般会使用react-router这个包,但是下V4版本之后,这个包针对不同的开发环境被拆分成了不同的包,在web中我们使用react-router-dom。

看示例代码:

代码语言:javascript
复制
import React from "react";
import {
  BrowserRouter as Router,
  Switch,
  Route,
  Link
} from "react-router-dom";

export default function App() {
  return (
    <Router>
      <div>
        <nav>
          <ul>
            <li>
              <Link to="/">Home</Link>
            </li>
            <li>
              <Link to="/about">About</Link>
            </li>
            <li>
              <Link to="/users">Users</Link>
            </li>
          </ul>
        </nav>

        {/* A <Switch> looks through its children <Route>s and
            renders the first one that matches the current URL. */}
        <Switch>
          <Route path="/about">
            <About />
          </Route>
          <Route path="/users">
            <Users />
          </Route>
          <Route path="/">
            <Home />
          </Route>
        </Switch>
      </div>
    </Router>
  );
}

function Home() {
  return <h2>Home</h2>;
}

function About() {
  return <h2>About</h2>;
}

function Users() {
  return <h2>Users</h2>;
}

观察代码,步骤如下:

1、引入react-router-dom

2、从react-router-dom中导出需要使用的模块组件,这里面有:

a、路由最外层组件 Router

b、Switch包裹组件,作用是匹配路由后只渲染一个组件

c、Route站位组件,通常需要传递组件参数,有多种传递方式

d、Link导航组件,类似超链接。

3、结构布局,Router在最层,Switch在中间层包裹所有Route,Link放在导航部分,一般Link部分会放在页面中的公共部分。

上面三步基本基本能满足大部分React路由的需求了,但是这里面有需要大家注意的地方:

A、首先是路由的匹配是从上到下,也就是在switch包裹的Route中,先匹配/about,在匹配/users,在匹配/,代码中国如果没有switch,你无论访问哪个路由 /对应的组件都会显示,因为/匹配所有路由。

B、其次"/"Route所包裹的组件放在了所有路由组建的最后面,这是因为如果放在最前面,那么/about和/users就不会显示了,因为只要访问/*,都会被匹配到/路由,作者这里将其放在了所有的路由组件后面,其实这里还有另外一种使用方式,个/路由组件添加一个exact属性,这是精确匹配的意思,只用路由是/才能和这个路由匹配。

局部代码如下:

代码语言:javascript
复制
<Switch>
    <Route exact={true} path="/">
        <Home />
    </Route>
    <Route path="/about">
        <About />
    </Route>
    <Route path="/users">
        <Users />
    </Route>
</Switch>

这里面还有需要注意的地方是Route的使用,Route使用时需要向其内部传递组件,这里有三种方式,分别是children、component、render。

上面代码示例其实是第一种,Route标签包含需要被渲染的组件标签,接下来我们看第二种使用component,局部改造代码如下:

代码语言:javascript
复制
<Switch>
                    <Route path="/about" component={About}>
                    </Route>
                    <Route path="/users" component={Users}>
                    </Route>
                    <Route path="/" component={Home}>
                    </Route>
                </Switch>

此时的效果和前面一样,只是写法不同而已,这里需要注意,children的优先级高于component。

再看第三种,render,代码如下:

代码语言:javascript
复制
<Switch>
                    <Route path="/about" render={() => {  return <About />}}>
                    </Route>
                    <Route path="/users" render={() => { return <Users /> }}>
                    </Route>
                    <Route path="/" render={() => { return <Home /> }}>
                    </Route>
                </Switch>

大家在使用时需要注意。

以上便是React中路由的使用,希望对你有所帮助。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档