React18手动封装WithRouter

在react18以前,如果是一个路由组件的话,在其props属性有当前路由地址,路由跳转等方法,而到了18以后以为推崇函数式组件,直接把路由组件props删除了,而函数式组件还可以通过hooks获取并使用,那类式组件只能自己进行封装。

import { useLocation, useNavigate, useParams } from 'react-router'
export function withRouter(Child: any): Function {
    return (props: {}) => {
        const location = useLocation()
        const navigate = useNavigate()
        return <Child {...props} location={location} navigate={navigate} params={useParams}></Child>
    }
}

首先从React route引入useLocation, useNavigate, useParams这几个hooks。

既然类式组件无法使用它们,那我们就通过函数return进行返回类式组件,通过props属性手动去传递给他们,child是传递的类式组件,可能是别的组件的子组件,通过三点运算符,将其接受的props解构赋值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值