• React中路由操作、页面跳转


    1、使用 react-router-dom 中的 Link 实现页面跳转

    一般适用于,点击按钮或其他组件进行页面跳转,具体使用方式如下:

    {
            pathname: '/path/newpath',
            state: {  // 页面跳转要传递的数据,如下
                  data1: {},
                  data2: []
            },
        }}
    >
       
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2、使用 react-router-redux 中的 push 进行页面跳转

    react-router-redux 中包含以下几个函数,一般会结合redux使用:

    • push - 跳转到指定路径
    • replace - 替换历史记录中的当前位置
    • go - 在历史记录中向后或向前移动相对数量的位置
    • goForward - 向前移动一个位置。相当于go(1)
    • goBack - 向后移动一个位置。相当于go(-1)

    具体使用时通过发送disppatch来进行页面跳转:

    // 传递的参数
    let param1 = {}
    
    dispatch(push("/path/newpath'", param1));
    dispatch(replace("/path/newpath'", param1));
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、使用RouteComponentProps 中的history进行页面回退

    一般在完成某种操作,需要返回上一个页面时使用。

    this.props.history.goBack();  
    
    • 1

    4、打开一个新的tab页,并截取路径

    首先定义路由为 :

    path: "/pathname/:param1/:param2/:param3",
    
    • 1

    点击事件跳转到新页面 打开一个新的tab:

    window.open(`pathname/${param1}/${param2}/${param3}`)
    
    • 1

    在新的页面获取路径上的参数:

    param1:  this.props.match.params.param1, 
    param2:  this.props.match.params.param2, 
    param3:  this.props.match.params.param3, 
    
    • 1
    • 2
    • 3

    获取路径参数 :

    path?key1=value1&key2=value2
    
    const query = this.props.match.location.search 
    const arr = query.split('&')  // ['?key1=value1', '&key2=value2']
    const successCount = arr[0].substr(6) // 'value1'
    const failedCount = arr[1].substr(6) // 'value2'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    或者:

    function GetUrlParam(url, paramName) {
      var arr = url.split("?");
    
      if (arr.length > 1) {
        var paramArr= arr[1].split("&");
        var arr;
        for (var i = 0; i < paramArr.length; i++) {
          arr = paramArr[i].split("=");
    
          if (arr != null && arr[0] == paramName) {
            return arr[1];
          }
        }
        return "";
      }else {
        return "";
      } 
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    什么是研发效能DevOps?研发效能方程式又是什么?
    flutter 视频解码器fijkplayer使用
    pycharm删除解释器没有showall
    搭建LInux服务面板1Panel.
    Java后端同第三方服务建立Socket通信①Python编写脚本模拟第三方服务(基础版)
    经典算法——冒泡排序
    【SQLServer】并行的保留线程和已使用线程
    解决“你当前无权访问该文件夹”问题的8种方法
    python - lambda x用法
    vscode 实用插件
  • 原文地址:https://blog.csdn.net/m0_66557301/article/details/126113981