React路由拦截模式及withRouter示例详解

 更新时间:2022年08月03日 16:07:29   作者:你华还是你华  
这篇文章主要为大家介绍了React路由拦截模式及withRouter示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、路由拦截

在前面两篇 路由博客基础上,我们将ReactRouter.js的我的profile路由设置成路由拦截的:

<Route path="/profile" render={() => 
                isAuth() ? <Profile/> : <Redirect to="/login"></Redirect>
              }></Route>

新建Login.js组件,写入代码:

import React, { Component } from 'react'

export default class Login extends Component {
  render() {
    return (
      <div>
          <h2>Login</h2>
          <input type="text"></input>
          <button onClick={() => {
              localStorage.setItem('token', 123  )
              this.props.history.push('/profile')
          }}>模拟登录</button>
      </div>
    )
  }
}

效果:

二、路由模式

之前带#号的路由模式为哈西模式,如果想不带#号的话,可以写成如下:

但是BrowserRouter没有#路径,后端如果没有对应的路径处理逻辑,就会404。

三、withRouter

如果我们在我的页面里面还有我的订单路由的话,那么在Profile.js中写入跳转的语法:

import React from 'react'

export default function Profile(props) {
  return (
    <div>
        <h1>Profile</h1>
        <div onClick={() => {
          props.history.push('/profileorder')
        }}>我的订单</div>
      </div>
  )
}

可以看到报错了,那我们之前那种写法不生效了吗。其实跟路由的创建有关系,之前是直接将组件用component属性直接传了过去,所以propshistory对象,但是这次我们是采用的render将组件在立即函数中实例化了,不传进去:

所以在这里props接收不到任何东西,是非常正常的。在使用render的路由时,我们可以这样传参:

通过传props那么子组件中将有路由的一些属性,就可以做跳转。如果在路由组件上不传props的话,那么将使用withRouter进行跳转。将props删除:

可以看到即使render的路由父组件不传props,我们使用withRouter,也能够进行路由的跳转。

以上就是React路由拦截模式及withRouter示例详解的详细内容,更多关于React路由拦截模式withRouter的资料请关注脚本之家其它相关文章!

相关文章

  • React css-in-js基础介绍与应用

    React css-in-js基础介绍与应用

    随着React、Vue等支持组件化的MVVM前端框架越来越流行,在js中直接编写css的技术方案也越来越被大家所接受。为什么前端开发者们更青睐于这些css-in-js的方案呢,下面带你了解它
    2022-09-09
  • react同构实践之实现自己的同构模板

    react同构实践之实现自己的同构模板

    这篇文章主要介绍了react同构实践之实现自己的同构模板,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • React文件名和目录规范最佳实践记录(总结篇)

    React文件名和目录规范最佳实践记录(总结篇)

    React在使用时非常灵活,如果没有一个规范约束项目,在开发过程中会非常混乱,本文将介绍几个优秀的规范,介绍文件名和目录前,需要先简述一下几种通用的类型,用来区分文件的功能,感兴趣的朋友一起看看吧
    2022-05-05
  • 解决React报错Functions are not valid as a React child

    解决React报错Functions are not valid as 

    这篇文章主要为大家介绍了React报错Functions are not valid as a React child解决详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • 基于React.js实现兔兔牌九宫格翻牌抽奖组件

    基于React.js实现兔兔牌九宫格翻牌抽奖组件

    这篇文章主要为大家详细介绍了如何基于React.js实现兔兔牌九宫格翻牌抽奖组件,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-01-01
  • react项目如何运行在微信公众号

    react项目如何运行在微信公众号

    这篇文章主要介绍了react项目如何运行在微信公众号,帮助大家更好的理解和学习使用react,感兴趣的朋友可以了解下
    2021-04-04
  • React+Node实现大文件分片上传、断点续传秒传思路

    React+Node实现大文件分片上传、断点续传秒传思路

    本文主要介绍了React+Node实现大文件分片上传、断点续传秒传思路,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • React中关于render()的用法及说明

    React中关于render()的用法及说明

    这篇文章主要介绍了React中关于render()的用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 简易的redux createStore手写实现示例

    简易的redux createStore手写实现示例

    这篇文章主要介绍了简易的redux createStore手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • React中jquery引用的实现方法

    React中jquery引用的实现方法

    这篇文章主要介绍了React中jquery引用的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09

最新评论