react-router-dom笔记

参考文章: 初探 React Router 4.0

  • import as 关键字用来给导入的变量设置新的名字,同时可以将整个模块导入。
改名字:
import { lastName as surname } from './profile';

整体加载:
import * as circle from './circle';
console.log('圆面积:' + circle.area(4));
console.log('圆周长:' + circle.circumference(14));
  • exact用于精准匹配路径,不用exact也会匹配到匹配的路径的子路径,这样两个路由组件都会显示。我们需要的是每次切换只会显示一个Route中指定的组件
<Route  exact path="/" component={App}></Route>
<Route path="/hot" component={Hot} ></Route>
  • 传递参数到路由对应的组件:在参数前面加上: ,比如${match.url}/:id,

  • match.params(函数式声明的组件中,match需要在函数参数中引入)或this.props.match.params(React class类render函数中)

  • 路由路径参数传递到模板,用baseUrl/:id类似格式,组件中用match.params.id接收。

  • Link组件通过to属性链接到对应pathRoute组件后 会渲染component属性对应的组件到页面上。

  • 路由的嵌套:${match.url}可以获取到当前的基础路径。然后在路由用到的组件中可以用。

  • 路由的嵌套,直接在子组件模板中添加Route,Link,match.url引入基础路径

  • Route 自带三个 render method 和三个 props 。

render methods 分别是:
<Route component>
<Route render>
<Route children>

props 分别是:
match
location
history
  • 当访问地址和路由匹配时,一个 React component 就会被渲染,此时此组件接受 route props (match, location, history)。

  • match 对象包含了 Route path 如何与 URL 匹配的信息,具有以下属性:
    params: object 路径参数,通过解析 URL 中的动态部分获得键值对
    isExact: bool 为 true 时,整个 URL 都需要匹配
    path: string 用来匹配的路径模式,用于创建嵌套的 Route
    url: string URL 匹配的部分,用于嵌套的 Link

  • 在以下情境中可以获取 match 对象
    在 Route component 中,以 this.props.match获取
    在 Route render 中,以 ({match}) => () 方式获取
    在 Route children 中,以 ({match}) => () 方式获

  • Router/Route 的改变:V4 Router组件里只能渲染一个组件,V2和V3可以渲染多个。

Link 的特殊版,为页面导航准备的。因为导航需要有 “激活状态”。

  • activeStyle: object
    如果不想使用样式名就直接写style

  • activeClassName: string
    导航选中激活时候应用的样式名,默认样式名为 active

  • exact: bool
    若为 true,只有当访问地址严格匹配时激活样式才会应用

  • 在Route中同时使用render和component时render方法不会起作用!

  • replace使得该链接的上一个链接回退时会跳过

  • <Switch> 只渲染出第一个与当前访问地址匹配的 <Route> 或 <Redirect>
    为什么 RR4 机制里不默认匹配第一个符合要求的呢?
    答:这种设计允许我们将多个<Route>组合到应用程序中,例如侧边栏(sidebars)等等。

  • <Switch>下的子节点只能是 &lt;Route&gt;&lt;Redirect&gt;元素。只有与当前访问地址匹配的第一个子节点才会被渲染。<Route> 元素用它们的 path 属性匹配,<Redirect>元素使用它们的 from 属性匹配。如果没有对应的 path 或 from,那么它们将匹配任何当前访问地址。

  • 单页面应用程序最终组件的结构:BrowserRouter–>div–>链接组件和路由组件 。

  • !!e.target.value.trim():表示将字符串转化为Boolean值,第一个感叹号对字符串取反,第二个字符串再次取反从而实现转换。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值