RouteComponentProps 与 useHistory

2024-06-05

使用React功能组件和Typescript,使用useHistory钩子与RouteComponentProps(react router v5.1)之间有什么区别吗?

使用 RouteComponentProps 的示例:

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

interface PropsType extends RouteComponentProps {
    text: string;
}

const MyFunctionalComponent = ({
    text,
    history
    }: PropsType) => {
  
};

使用 useHistory 的示例:

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

interface PropsType {
    text: string;
}
const MyFunctionalComponent = ({
    text
  }: PropsType) => {
    const history = useHistory();
};

我和你的情况完全一样,我想和你分享我的结论。

首先,两种方法的程序化导航的行为是相同的,因为它们都使用相同的history https://reactrouter.com/web/api/history实例,但使用方式上有一些区别:

  • 使用会员history of RouteComponentProps迫使您使用 props 将其一直钻到组件树中。这种方法没有任何问题,但是如果你的组件树不断增长,你可能会发现自己钻了很多层组件。

  • Using useHistory钩子可以避免之前的道具钻孔,只允许您使用history任何功能组件中的实例。注意这个钩子是未来钩子的快速权宜之计 https://reacttraining.com/blog/react-router-v5-1/#usehistory并最终将被取代useNavigate hook.

就我个人而言,我发现useHistory为长组件树挂钩一个更干净、更可读的解决方案,但我继续使用history的实例RouteComponentProps如果该组件是接近的或直接子组件Route成分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RouteComponentProps 与 useHistory 的相关文章

随机推荐

  • SonarQube 将所有问题添加为 Code Smell

    升级到 5 5 版本后 现在最新的 5 6 SonarQube 总是将我通过插件创建的问题显示为 Code Smell 我想了解有关分类的更多信息以及如何将它们添加为其他类型 漏洞 和 错误 我创建问题的代码如下 Issuable issu
  • Mac App Store 应用内购买的在线收据验证

    对于 iOS 的应用内购买 我们可以使用在线 API 进行验证 http developer apple com library ios documentation NetworkingInternet Conceptual StoreKi
  • 如何用C++计算时间差

    在 C 中计算时间差的最佳方法是什么 我正在计算程序的执行速度 因此我对毫秒感兴趣 更好的是 秒 毫秒 接受的答案有效 但需要包含 ctime 或 time h 如评论中所述 See std clock http en cppreferen
  • 如何组合两个列表,删除重复项,而不改变列表的元素顺序?

    我想合并两个列表并删除重复的值 假设我有两个列表 lst1 23 15 46 76 45 lst2 43 32 15 49 45 10 我想输出 result 23 15 46 76 45 43 32 49 10 在结果中 必须保持元素的列
  • 反斜杠“\”的真正含义是什么?

    我想知道 Java 的反斜杠 计算机或编译器如何看到这个反斜杠以及它如何存储在计算机中 我读到反斜杠删除了以下字符的特殊含义 但是计算机如何处理这个问题以及在什么情况下以其他方式处理它呢 例如空字符 0在C编程中 是字符串的结尾 但它是单个
  • 如何在 Compose Image 中显示位图

    我有一个返回位图 其中 包含 QR 码 的函数 并且我想在Image 可组合函数 但我没有找到任何方法将位图转换为ImageBitmap或者只是显示该位图 基于这篇博文 https proandroiddev com display map
  • 如何使用 JSON.NET 反序列化?

    如何设置 Newtonsoft Json net 将此文本反序列化为 NET 对象 US Hawaii GMT 10 00 Hawaii US Alaska GMT 09 00 Alaska 为了加分 这种结构在Json中叫什么 我尝试寻找
  • JPQL 我们不能 CONCAT(String, Integer) EclipseLink?

    在 JPQL 查询中 我尝试在 select 子句中使用 CONCAT JPQL 函数将字符串与整数连接起来 例如 SELECT CONCAT c idClient c name FROM Clients c 但结果不是可读的字符串 我们可
  • 如何查找字典值的长度

    我对这一切都很陌生 所以这可能是一个新手问题 但我正在寻找字典值的长度 但我不知道如何做到这一点 例如 d key hello brave morning sunset metaphysics 我想知道有什么办法可以找到len or 东西的
  • Cosmos DB 延续令牌大小影响查询是否返回新文档

    我正在摆弄 Azure Cosmos DB 通过 NET SDK 并注意到一些奇怪的事情 通常 当我使用延续令牌逐页请求查询时 我永远不会获得在创建第一个延续令牌之后创建的文档 我可以观察到已更改的文档 缺少已删除 或者更确切地说是新过滤出
  • 使用 Xcode 3.2 进行 PyObjC 开发

    Xcode 3 2 删除了脚本语言 Ruby Python 等 的默认模板 如何找到这些模板以在 Xcode 3 2 中使用 我是否需要向 Xcode 添加任何其他内容来支持使用和 构建 PyObjC 程序 此外 考虑到我已经是 Pytho
  • 如何在 PHP Soap 客户端中禁用命名空间别名?

    我的 PHP Microsoft AX 集成有问题 我正在使用 SOAP WSDL 与服务集成 我遇到的问题是在从 PHP 向 WSDL 发送请求后收到此错误 无效的实例类型名称 ns3 AxdEntity DirParty DirOrga
  • 向二元 kdeplot 添加标签

    我喜欢 Seaborn 的例子多个双变量 KDE 图 https seaborn pydata org examples multiple joint kde html 但我希望在该示例中使用标准 matplotlib 图例而不是自定义标签
  • kubernetes 如何将 pod 暴露给集群机器之外的东西?

    我读了以下内容Kubernetes 文档 https kubernetes io docs tutorials kubernetes basics expose expose intro 这导致以下 yaml 在集群中运行 postgres
  • 干预/图像上传错误{{图像源不可读}}

    我正在尝试添加个人资料图片上传拉拉维尔 5 1 我用的是Intervention Image打包但当我尝试上传图像时出现此错误 AbstractDecoder php 第 302 行中的 NotReadableException 图像源不可
  • 在 AT&T x86 程序集中查找转义字符

    问题一 我有以下汇编代码 其目的是循环输入字符串 并计算它遇到的转义字符 的数量 globl sprinter data escape string string num escape long 0 num characters long
  • 如何检测跨平台浮点行为的差异

    我可以执行哪些检查来确定两个硬件平台的浮点行为有何差异 验证 IEEE 754 合规性或检查已知错误可能就足够了 以解释我观察到的输出差异 我通过 proc cpu 查看了 CPU 标志 两者都声称支持 SSE2 我在看 https www
  • 使用 NSPredicate 来检测 NOT CONTAINS

    我放弃 我已经尝试了我能想象到的所有组合来检查一个字符串是否包含另一个字符串 这是描述我想要做的事情的直观语法示例 NSPredicate pPredicate NSPredicate predicateWithFormat NOT K C
  • Jena/ARQ:模型、图和数据集之间的区别

    我开始使用耶拿引擎 我想我已经掌握了语义是什么 然而 我很难理解耶拿和 ARQ 中表示一堆三元组的不同方法 开始时你遇到的第一件事是Model文档中提到了 RDF 图的 Jenas 名称 不过也有Graph当我想查询模型的联合时 这似乎是必
  • RouteComponentProps 与 useHistory

    使用React功能组件和Typescript 使用useHistory钩子与RouteComponentProps react router v5 1 之间有什么区别吗 使用 RouteComponentProps 的示例 import R