• react路由组件传参三种方式使用


    路由组件和组件的区别?

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

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

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

    Swith内置组件使用

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

    react 路由传参

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

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

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

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

    1. componentDidMount(){
    2. console.log(this.props.history.location.search);
    3. let a=this.props.history.location.search.slice(1)
    4. let b=a.split('&')
    5. console.log(b);
    6. let obj={}
    7. b.forEach((item)=>{
    8. item.split('=')
    9. obj[item.split('=')[0]]=item.split('=')[1]
    10. })
    11. console.log(obj);
    12. }

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

    下载:npm i querystring -D

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

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

    方式二:url的params传参

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

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

    打印:

    1. componentDidMount(){
    2. // console.log(this.props);
    3. console.log(this.props.match.params);
    4. }

    方式三:

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

    打印:

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

    编程式导航

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

    home组件

    1. export default class home extends Component {
    2. onchange=()=>{
    3. this.props.history.push('/home/?name=张三&age=19')
    4. }
    5. render() {
    6. return (
    7. <div>
    8. <button onClick={()=>{this.onchange()}}>点击跳转到home页</button>
    9. </div>
    10. )
    11. }
    12. }

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

    app组件

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

    Redirect重定向

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

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

  • 相关阅读:
    日语
    SpringSecurity基础:授权
    BM6 判断链表中是否有环——Java Set集合&&hashSet哈希表应用
    【数据结构】平衡二叉树(AVL树)的平衡调整方法
    c语言数据结构,你可能还不知道的顺序表
    拓端tecdat|R语言预测期货波动率的实现:ARCH与HAR-RV与GARCH,ARFIMA模型比较
    【408数据结构与算法】—顺序表的插入、删除和查找(四)
    Linux企业应用——Docker(二)之Docker镜像的构建、Dockerfile的编写
    LeetCode 41. 缺失的第一个正数
    秒杀系统设计
  • 原文地址:https://blog.csdn.net/qq_60976312/article/details/125555745