zoukankan      html  css  js  c++  java
  • 关于react-router-dom的一些记录

    最近在做的新项目使用的技术栈是 React+AntDesign,本篇主要记录在实践过程中使用react-router-dom时遇到的一些方法的总结。

    1、HashRouterBrowserRouter

    react-router-dom依赖于react-router,主要用于浏览器环境下的开发。它的路由基本有2个路由容器即HashRouterBrowserRouterHashRouter使用的是hashchange的方法,浏览的url中包含#BrowserRouter使用的原理是H5的history API来使url发生改变。本文主要以HashRouter为例。

    import { HashRouter as Router, Route, Switch } from "react-router-dom";
    
    import Join from "./Join";
    import Success from "./Success";
    import Login from "../Login";
    import Home from "../Home";
    
    <Router>
         <Switch>
            <Route exact path='/join' component={Join} />
            <Route exact path='/success' component={Success} />
    	<Route exact path='/login' component={Login} />
            <Home />
         </Switch>
    </Router>
    

    2、Switch

    只渲染第一个匹配到的路由组件,Switch下的子节点只能是 Route 或 Redirect 元素。只有与当前访问地址匹配的第一个子节点才会被渲染。

    3、Route

    Route 主要用于控制路径对应显示的组件,编程式导航三个路由属性是:
    exact:精准匹配,不再向下匹配
    path:标识路由的路径
    component:路径对应显示的组件

    路由导航:NavLink区别在于有一个属性用来显示跳转选中的样式。它具有:

    • activeStyle:可以直接写选中的样式
    • activeClassName:激活时应用的样式名,默认是active
    import { Link } from "react-router-dom";
    <Link to="/about">About</Link>
    
    • to:链接到的路径或位置
    • replace:替换路径

    5、withRouter

    withRouter可以包装任何自定义组件,将react-router 的 history,location,match 三个对象传入。
    无需一级级传递react-router 的属性,当需要用的router 属性的时候,将组件包一层withRouter,就可以拿到需要的路由信息。
    主要用于子组件。

    6、match

    用于获取路由的参数信息

    console.log(this.props.match.params.id)
    
    • params:object 路径参数,通过解析 URL 中的动态部分获得键值对
    • isExact:为 true 时,整个 URL 都需要匹配
    • path:用来匹配的路径模式
    • url: 匹配的链接

    7、location

    用来存放当前的路径的信息

    const { pathname } = this.props.location;
    
    • pathname:url路径
    • search:查询字符串
    • hash:hash

    8、history

    可以用来手动跳转到页面

    this.props.history.push('/user/list')
    
  • 相关阅读:
    「日常训练」Single-use Stones (CFR476D2D)
    「日常训练」Greedy Arkady (CFR476D2C)
    「Haskell 学习」二 类型和函数(上)
    「学习记录」《数值分析》第二章计算实习题(Python语言)
    「日常训练」Alena And The Heater (CFR466D2D)
    Dubbo 消费者
    Dubbo 暴露服务
    Rpc
    git fail to push some refs....
    Spring Cloud (6)config 客户端配置 与GitHub通信
  • 原文地址:https://www.cnblogs.com/webhmy/p/10283101.html
Copyright © 2011-2022 走看看