05-路由中的Hook

news/2024/7/15 17:45:34 标签: javascript, react.js, 前端

hook中使用 this.props中的路由

类组件中我们通过 this.props 获取到的关于路由的相关方法和数据,在函数组件中还是可以继续通过参数 props 来获取使用:

export default function Login(prosp) {
    return (
        <button onClick={() => {
            props.history.push('/')        
        }}>登录</button>
    )
}

同样的,在类组件中,如果我们需要非路由组件,需要使用 withRouter 进行包裹处理的,在函数组件中也一样的可以使用:

import { withRouter } from 'react-router-dom';

function TheHeader(props) {
    return (
        <button onClick={() => {
            props.history.push('/login')
        }}>登录</button>
    )
}

export default withRouter(TheHeader)

第三方 路由Hook

但是,react-router-dom 路由插件也给我们专门提供了第三方的 hook 来实现路由的跳转,以及参数的获取等操作:

import { useHistory, useLocation, useParams,Link } from 'react-router-dom';
export default function TheHeader() {
    const history = useHistory();
    const location = useLocation();
    const params = useParams();
    return (
        <button onClick={() => {
            history.push('/login')
        }}>退出</button>
    )
}

说明:

  • useHistory():获取 history 对象, history 对象提供了路由的跳转方法;

    • 例如 push方法、go方法、replace方法
  • useLocation():获取 location 对象,location 对象提供了路由的一些描述相关信息;

    • 提供路由的一些描述信息,例如 路径pathName等
  • useParams():获取动态路由的参数对象;

    • 提供路由传递的一些参数

    • 注意只有动态路由传递的参数可以获取到,其他query等方式传递的参数 获取不到

  • Link:Link标签跳转


http://www.niftyadmin.cn/n/129129.html

相关文章

java进阶—线程安全问题

线程安全问题&#xff0c;就涉及到一个资源共享&#xff0c;资源共享很好理解&#xff0c;就是多个线程同时操作一个资源池 就比如&#xff0c;快五一了&#xff0c;12306 购票&#xff0c;假设从北京到上海的 高铁票 一共只有200 张&#xff0c;现在3个人同时在线抢票&#x…

ISFP型人格的优势和劣势分析(mbti性格测试)

isfp型人格的优势分析ISFP在艺术上具有令人惊叹的天分&#xff0c;他们充沛且敏锐的情感能够轻易捕捉到那些细腻的情感变化。他们具有强大的表现力和感染力&#xff0c;能够通过自己的作品&#xff0c;将情感描绘出来并令观众感同身受&#xff0c;这使得他们在艺术和人文领域能…

2023年全国最新道路运输从业人员精选真题及答案15

百分百题库提供道路运输安全员考试试题、道路运输从业人员考试预测题、道路安全员考试真题、道路运输从业人员证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 151.道路运输企业&#xff08;&#xff09;应当具备与本单位所从…

LeetCode 全题解笔记:两数之和(01)

两数之和&#xff08;easy&#xff09; 题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出和为目标值 target 的那两个整数&#xff0c;并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在…

面试官: 谈下音视频同步原理,音频和视频能绝对同步吗?

作者&#xff1a;波哥 心理分析&#xff1a;音视频同步本身比较难&#xff0c;一般使用ijkplayer 第三方做音视频同步。不排除有视频直播 视频通话需要用音视频同步&#xff0c;可以从三种 音频为准 视频为准 自定义时钟为准三种方式实现音视频同步 求职者:如果被问到 放正心态…

java单元测试批处理数据模板【亿点点日志配合分页以及多线程处理】

文章目录引入相关资料环境准备分页查询处理&#xff0c;减少单次批量处理的数据量级补充亿点点日志&#xff0c;更易观察多线程优化查询_切数据版多线程_每个线程都分页处理引入 都说后端开发能顶半个运维&#xff0c;我们经常需要对大量输出进行需求调整&#xff0c;很多时候…

连续点击返回键退出Android 应用

问题 业务需要&#xff0c;在主界面连续点击返回键退出应用&#xff0c;记录一下。 解决方案 先说结论&#xff0c;在主界面Activity中添加如下代码 /*** 记录上次点击返回键时间*/private long lastClickTime 0;/*** 两次回退点击时间间隔设置不小于2s*/public static fi…

axios请求响应结果的结构,axios的请求对象

axios请求响应结果的结构 config&#xff1a;配置对象&#xff0c;包括很多内容&#xff0c;请求类型&#xff0c;请求url&#xff0c;请求体等等 data:响应体&#xff0c;服务器返回结果&#xff0c;并且将结果进行json解析&#xff0c;转为对象 headers:响应的头信息 requ…