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')
    
  • 相关阅读:
    Code First 迁移更新数据库
    vs2013常用快捷键
    Uploadify v3.2.1 参数说明
    中文datepicker控件
    C#去掉HTML标记
    扩展HtmlHelper类实现Mvc4分页
    MVC4实现批量更新数据
    MVC4.0实现批量删除
    通知的多线程问题 iOS
    写一个 setter 方法用于完成 @property (nonatomic, retain) NSString *name,
  • 原文地址:https://www.cnblogs.com/webhmy/p/10283101.html
Copyright © 2011-2022 走看看