react-router在Class组件中用hook(useNavigateAPI)

高阶组件包装使得hook在class组件中使用

import { useNavigate } from 'react-router-dom'
// 高阶组件包装
function widthHook(WrapCompontent) {
  // 设置别名
  WrapCompontent.displayName = `WithHook${getDisplayName(WrapCompontent)}`
  return function QiLincompont() {
    const navigate = useNavigate()
    return <WrapCompontent to={navigate}></WrapCompontent>
  }
}

// 设置别名
function getDisplayName(WrapCompontent) {
  return WrapCompontent.displayname || WrapCompontent.name || 'Component'
}

export default widthHook

此时高阶组件函数已经写好了,只需要对自己写的组件进行包装即可

import React from 'react'
import withHook from 'withHook'

class IndexSwiper extends React.PureComponent {
    toPath = (path) => {
        this.props.to(path)
    }
    render() {
        return <button onClick={ this.toPath('/news') }>路由跳转</button>
    }
}

const QilinCompont= withHook(IndexSwiper )

export default QilinCompont

 改改路径可以直接使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Heigl swift

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值