3.封装withRouter

文章介绍了在ReactRouter6.0中,由于组件不再有路由信息,需使用hooks来获取。通过`useLocation`、`useParams`和`useNavigate`这三个hooks,作者封装了一个名为myHoc的高阶组件,它能将路由信息代理给旧的组件,实现了类似withRouter的功能,支持动态路由传值和编程式导航。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 在react-router6.0中所有的组件都没有路由信息,也没有widthRouter, 需要使用hooks语法引入路由信息, 所以,我们可以自己封装withRouter高阶组件
// 由于路由数据是在props中,所以使用属性代理方式

import { useLocation, useParams, useNavigate }  from "react-router-dom"

function myHoc(OldCom){
    // 必须返回函数式组件, 因为hooks语法不能用于类组件
    return ()=>{
        // 从hooks中获取路由信息
        const location = useLocation() // 用于路由url传值和state对象传值
        const params = useParams()  // 用于动态路由传值
        const navigate = useNavigate() // 用于编程式导航跳转
        const tempProps = {location, params, navigate}

        // 返回组件模板
        return <OldCom {...tempProps} />
    }
}

export default myHoc
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值