基于路由进行任务列表过滤(三)01-三种路由重定向方式:path=filter & exact path= render={() = Redirect to=all & exact from= to=

本文介绍了在React应用中,如何基于路由进行任务列表的过滤。通过/:filter?动态路由参数,可以实现不同状态任务的显示。当URL为空时,使用Redirect或Route的render属性进行重定向到显示所有任务的页面。同时,通过Switch组件避免了路由匹配冲突,确保了组件正确渲染。
摘要由CSDN通过智能技术生成

基于路由进行任务列表过滤——三种路由重定向方式:path="/:filter?" & exact path="/" render={() => <Redirect to="/all" & exact from=’/’ to=’/all’

  • 需求:根据当前 URL 路径,来展示不同的任务

    • http://localhost:3000/all 表示:要渲染所有任务
    • http://localhost:3000/will 表示:要渲染未完成的任务
    • http://localhost:3000/done 表示:要渲染已完成的任务
  • 问题:如何获取整个内容? 使用路由参数,配置路由规则为:/:filter

    • 可以在路由参数后面,添加一个 ? 表示当前参数是可选的,也就是说:传该参数,也可以不传这个参数
//重定向——方式一       --------------------------------
{/* 路由后面的?表示动态参数是可选的 */}
<Route path="/:filter?" component=... />


  // 获取动态路由参数
  let type = props.match.params.filter
  if (!type) {
    // 路由匹配 / ,那么就没有动态参数,所有需要指定默认值-all
    type = 'all'
  }
  • 路由匹配问题
    • 当 URL 地址为: http://localhost:3000/ 的时候, 这个 URL 地址,能够被 path="/" 来匹配;也能够被 path="/:filter?" 来匹配,而这样的话,我们的代码,就会出现一些问题,比如:导致组件重复渲染
<BrowserRouter>
    <Switch> 
      //重定向——方式三       --------------------------------
        <Redirect exact from='/' to='/all'/>

        //重定向——方式二       --------------------------------
        <Route exact path="/" render={() => <Redirect to="/all" />} />

        //重定向——方式一      --------------------------------
        <Route path="/:filter?" component={App} />

          // 获取动态路由参数
          let type = props.match.params.filter
          if (!type) {
            // 路由匹配 / ,那么就没有动态参数,所有需要指定默认值-all
            type = 'all'
          }
      </Switch>
</BrowserRouter>
  • Switch 组件:用来包裹多个 Route 组件,被包裹的多个 Route 组件中,只要有一个路由规则匹配了,就不在匹配后续的路由规则了
<Switch>
  <Route exact path="/"/>
  <Route exact path="/:filter?"/>
</Switch>

路由重定向-效果

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值