首页 > 其他 > 详细

react 路由react-router 及react-router-dom的区别

时间:2020-06-01 23:03:10      阅读:63      评论:0      收藏:0      [点我收藏+]

现在市面上react有不少的路由管理库

  react-router

  react-router-dom

相信刚接触的react的时候,你会因为不知道如何去选择路由管理库而苦恼,但是一旦你清楚了它们之间的关系这个困惑就会消失。

  react-router 这个库实现了路由管理的核心功能

  react-router-dom 这个库依赖于react-router,但是它拓展了一下在浏览器环境下运行的一些功能。在使用时,我们只需npm i react-router-dom即可,不需要在单独安装react-router

一般项目中用到的路由库,react-router-dom其实就可以胜任。它的组成其实可以分为以下三类

  组件

      基于react-router的组件有:

export { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter } from ‘react-router‘;

      拓展的组件有:

export { BrowserRouter, HashRouter, Link, NavLink };

我们无需去熟悉所有的组件的用处,有些组件在你开发的过程中或许很难被用到,当需要的时候再去了解也并不晚,下面我将介绍几个常用的组件

     BrowserRouter

        使用browserRouter组件后在浏览其中,url的路径会是这样的localhost:3000/home你每一次改变路由都会发送向服务器发送一次请求,如果服务其没有配置对应路径指定的文件,那么自然是访问不到的,在测试环境中,当我们运行npm run start之后,webpack会给我们搭建一个后台服务,所以问们才能正确的访问,当你打包成dist之后,如果没有配置过服务器,是无法正确访问路由的。  

     HashRouter

        使用hashRouter组件,url会是这样的localhost:3000/#/home,url的改变完全是由前端去支配。localhost:3000/#/home 和localhost:3000/#/about对服务器来说都是localhost。不会因为/#/后面的地址改变而去像服务器发送请求

     Switch

        确保路由的正确匹配

 <HashRouter>
            {/*<Switch>*/} //没有switch /about将会匹配两个路由,并把它们都呈现在页面上 有switch则只会匹配一个,注意react的路由匹配规则是,谁在前谁匹配 不要把/ 放在最前方
                <Route path={‘/about‘} component={About}/>
                <Route path={"/about"} component={Home}/>
            {/*</Switch>*/}
        </HashRouter>

     Link

        可以认为它就是一个封装起来的a标签,它的最终解析结果也是一个a标签

      使用方法

  方法

    所有嵌套在 Router BrowerRouter HashRouter 中的路由组件的props会挂载一些属性history、location、match、staticContext

        技术分享图片

    我们可以通过history下面的方法去跳转路由

     this.props.history.push("/goods");//添加页面栈
        this.props.history.go(-1);//移除页面栈,返回指定之前指定个数的页面栈
        this.props.history.goBack();//移除页面栈,返回上一个页面栈
        this.props.history.replace(‘/goods‘);//替换页面栈,返回上一个页面栈

 

    

react 路由react-router 及react-router-dom的区别

原文:https://www.cnblogs.com/wrhbk/p/12955691.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!