React路由组件三种传参方式分析讲解

目录
  • 路由组件和组件的区别
  • Swith内置组件使用
  • react 路由传参
  • 编程式导航
  • Redirect重定向

路由组件和组件的区别

路由组件时被Router组件使用的组件,this.props里面有三个参数,分别是history、match、location

可以接收到路由跳转传参,也可以进行编程式导航跳转

普通组件只有父传子的props值

Swith内置组件使用

作用:当匹配一个路由组件时,其他组件不会被使用,可以加入404页面,给用户进行友好提示,提升用户体验

react 路由传参

方式一:url的query方式传参,在App组件中

//传值
<Link to='/home?name=张三&age=18'>主页面</Link>
//接收
<Route path='/home' component={home}></Route>

如果我们要打印我们接收到的值,有两种方式

第一种,在home组件中,创建一个生命周期,然后进行普通的切割、添加、打印即可

    componentDidMount(){
        console.log(this.props.history.location.search);
        let a=this.props.history.location.search.slice(1)
        let b=a.split('&')
        console.log(b);
        let obj={}
        b.forEach((item)=>{
        item.split('=')
        obj[item.split('=')[0]]=item.split('=')[1]
     })
   console.log(obj);
    }

第二种:使用querystring,在使用之前,需要下载引入

下载:npm i querystring -D

    componentDidMount(){
        let a=this.props.history.location.search.slice(1)
        console.log(querystring.parse(a));
    }

在页面使用:querystring.parse(url形式携带的字符串)

方式二:url的params传参

//传值
<Link to='/login/zhangsan/18'>登录</Link>
//接收
<Route path='/login/:name/:age' component={login}></Route>

注意:传入的参数跟值得长度必须一致,否则会报错

打印:

    componentDidMount(){
        // console.log(this.props);
        console.log(this.props.match.params);
    }

方式三:

//传值
  <Link to={{pathname:'/zhuce',user:{name:'张三',age:19}}}>注册页面</Link>
//接收
  <Route path='/zhuce' component={zhuce}></Route>

打印:

componentDidMount(){
        console.log(this.props.location.user);
    }

编程式导航

我们定义一个按钮,在按钮中给他一个点击事件,在事件函数中我们进行路由得跳转

home组件

export default class home extends Component {
    onchange=()=>{
        this.props.history.push('/home/?name=张三&age=19')
      }
  render() {
    return (
      <div>
        <button onClick={()=>{this.onchange()}}>点击跳转到home页</button>
      </div>
    )
  }
}

在home 组件中,this.props.history.push后面跟上边三种传参方式

app组件

<Link to='/home?name=张三&age=18'>主页面</Link>

Redirect重定向

跟我们vue中的redirect使用方法相似,用来路由跳转

<Redirect to='/'></Redirect>

到此这篇关于React路由组件三种传参方式分析讲解的文章就介绍到这了,更多相关React路由组件传参内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • React组件通信之路由传参(react-router-dom)

    目录 最近在学习react,现在的工作中使用的是vue,在学习的过程中对两者进行比较,加深理解. 以下是react中的一小部分知识点,我个人觉得也是比较常用的知识点,react组件通信的其中一种方式--路由传参(react组件通信的方式有多种,如props.事件回调.context.router.redux.缓存等等).现在单页面SPA应用的比较广泛,在不刷新整个页面进行部分页面的跳转,使用路由跳转便在所难免,那么react路由除了进行页面之间的跳转,还有很大一个作用就是进行页面或者组件切换时传

  • React路由组件传参的三种方式(params、search、state)

    目录 向路由组件传递params参数 向路由组件传递search参数 向路由组件传递state参数 总结三种向路由组件传参的方式 向路由组件传递params参数 当点击消息1这个导航链接时,展示下方对应的Detail路由组件,并向这个组件传递params参数(ID,TITLE,CONTENT)信息. 向路由组件传递params参数:在路径后面跟上想要传递的值 { messageArr.map((msgObj) => { return ( <li key={msgObj.id}> <

  • React路由组件三种传参方式分析讲解

    目录 路由组件和组件的区别 Swith内置组件使用 react 路由传参 编程式导航 Redirect重定向 路由组件和组件的区别 路由组件时被Router组件使用的组件,this.props里面有三个参数,分别是history.match.location 可以接收到路由跳转传参,也可以进行编程式导航跳转 普通组件只有父传子的props值 Swith内置组件使用 作用:当匹配一个路由组件时,其他组件不会被使用,可以加入404页面,给用户进行友好提示,提升用户体验 react 路由传参 方式一:

  • React构建组件的几种方式及区别

    目录 一.组件是什么 二.如何构建 函数式创建 通过 React.createClass 方法创建 继承 React.Component 创建 三.区别 一.组件是什么 组件就是把图形.非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发的模式 在React中,一个类.一个函数都可以视为一个组件 组件所存在的优势: 降低整个系统的耦合度,在保持接口不变的情况下,我们可以替换不同的组件快速完成需求,例如输入框,可以替换为日历.时间.范围等组件作具体的实现 调试方便,由于整个系统是通过组件组合起

  • 详解React中组件之间通信的方式

    一.是什么 我们将组件间通信可以拆分为两个词: 组件 通信 回顾Vue系列的文章,组件是vue中最强大的功能之一,同样组件化是React的核心思想 相比vue,React的组件更加灵活和多样,按照不同的方式可以分成很多类型的组件 而通信指的是发送者通过某种媒体以某种格式来传递信息到收信者以达到某个目的,广义上,任何信息的交通都是通信 组件间通信即指组件通过某种方式来传递信息以达到某个目的 二.如何通信 组件传递的方式有很多种,根据传送者和接收者可以分为如下: 父组件向子组件传递 子组件向父组件传

  • Mybatis的几种传参方式详解

    前言 前几天恰好面试一个应届生,问了一个很简单的问题:你了解过Mybatis中有几种传参方式吗? 没想到其他问题回答的很好,唯独这个问题一知半解,勉强回答了其中两种方式. 于是这篇文章就来说一说Mybatis传参的几种常见方式,给正在面试或者准备面试的朋友巩固一下. 单个参数 单个参数的传参比较简单,可以是任意形式的,比如#{a}.#{b}或者#{param1},但是为了开发规范,尽量使用和入参时一样. Mapper如下: UserInfo selectByUserId(String userI

  • 详解react hooks组件间的传值方式(使用ts)

    目录 父传子 子传父 跨级组件(父传后代) 父传子 通过props传值,使用useState来控制state的状态值 父组件 Father.tsx里: 子组件 Child.tsx里: 展示效果: 子传父 跟react的方式一样,像子组件传入回调函数,通过接收子组件的返回值,再去更新父组件的state 父组件,Father.tsx里: 子组件,Child.tsx里: 展示效果: 子传父优化版,使用useCallback存放处理事件的函数 父组件,Father.tsx里: 子组件,Child.tsx

  • React的组件协同使用实现方式

    目录 嵌套 父子组件通信 兄弟组件通信 抽离 Mixin React的LinkedStateMixin Reference: 开发人员不用太过于关注UI层面的实现细节,考虑最多的也就是组件与组件之间的数据通信了.那么,在React开发中,有哪些场景的组件协同?又如何去实现组件的协同使用呢? 组件的协同本质上是对组件的一种组织.管理方式. 目的是使得系统 逻辑清晰.代码模块化.封装细节.代码可复用. 组件的协同分为两种方式:嵌套.抽离.发布订阅模式. 嵌套 组件嵌套的本质就是父子关系,即为父组件和

  • 基于spring DI的三种注入方式分析

    一.前言: IOC(控制反转)与DI(依赖注入) Spring框架对Java开发的重要性不言而喻,其核心特性就是IOC(Inversion of Control, 控制反转)和AOP,平时使用最多的就是其中的IOC,我们通过将组件交由Spring的IOC容器管理,将对象的依赖关系由Spring控制,避免硬编码所造成的过度程序耦合. 在讲依赖注入之前,我觉得有必要了解一下IOC(控制反转)与DI(依赖注入)的关系,在这篇文章中有详细的介绍:spring IOC 与 DI. 二.DI的三种常见注入方

  • jquery mobile changepage的三种传参方法介绍

    本来觉得changePage 那么多option,传几个参数应该没问题结果翻遍国内外网站,基本方法只有三种 1,显性传参,就是利用url这个地址把参数带上,然后到changepage后的新页面,用函数分割下来,提取 2,利用全局变量,应该就是所谓的内存法,在changePage时候,把参数干脆搞个变量存起来,之后到新的页面再提取 3,利用storage了.localstorage,sessionstorage,格式正好是键值格式,先转字符,然后用的时候转成json对象用就是 实在话,不管哪种方法

  • 浅谈react路由传参的几种方式

    第一种传参方式,动态路由传参 通过设置link的path属性,进行路由的传参,当点击link标签的时候,会在上方的url地址中显示传递的整个url <Link to='/home?name=dx'>首页</Link> 如果想真正获取到传递过来的参数,需要在对应的子组件中 this.props.location.search 获取字符串,再手动解析 因为传参能够被用户看见,传递获取比较麻烦,所以不推荐 第二种传参方式,隐式路由传参 <Link to={{ pathname: '

随机推荐