如何记住自定义 React hook

2023-12-29

const useSomeHook = ({number}) => {
  const [newNumber, setNewNumber] = useState(0)

  useEffect(() => {
    setNewNumber(number + 1)
  }, [number])
}

const SomeComponent = ({number, value, ...restProps}) => {

  useSomeHook({number})


  return <div>{number}</div>
}

假设我有这个案例。每次当在SomeComponent来一些新的道具,它会调用我的useSomeHook钩子,但我想阻止它。我只想在以下情况下调用它number被改变(memoize它)。其他情况下,请勿触摸。但我还没有找到任何解决此案的方法。你能帮我解决这个问题吗?


您无法阻止调用钩子,这将导致不变违规错误。组件中的每个钩子都应该在每个渲染上执行。你应该依靠useEffect仅当值更改时才运行条件代码的依赖参数。

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

如何记住自定义 React hook 的相关文章

随机推荐

  • 使用 PayPal API 通过交易 ID 获取付款

    我有 PayPal 交易 ID 但不知道与其关联的付款 ID 付款不一定是由 REST API 创建的 我想使用交易ID查询付款 REST API 文档建议通过交易 ID 查找销售额仅当使用 REST API 创建时才可能 https de
  • 一次处理 N 个作业的 Asyncio Worker?

    我正在尝试做一个asyncio工人类将消耗作业队列中的作业并处理最多N并行工作 某些作业可能会排队其他作业 当作业队列为空并且工作线程完成所有当前作业时 它应该结束 我还在挣扎asyncio从概念上讲 这是我的尝试之一 其中N 3 impo
  • Jquery .remove() 撤消?

    有什么办法可以实现这一点吗 我正在使用一个分页插件 它读取 ul 中的 li 数量 并确定要吐出的编号链接的数量 您可能想使用 hide 并检查 li 是否可见 这可以通过以下方式完成 li visible
  • PySpark - 获取组中每行的行号

    使用 pyspark 我希望能够对 Spark 数据帧进行分组 对组进行排序 然后提供行号 所以 Group Date A 2000 A 2002 A 2007 B 1999 B 2015 会成为 Group Date row num A
  • JaCoCo 和 Gradle - 过滤选项

    我目前正在使用 Gradle 插件来运行 JaCoCo 来进行代码覆盖率报告 我想在我的 build gradle 中指定一些过滤选项 https github com jacoco jacoco wiki FilteringOptions
  • 如何使用 openpyxl“格式化单元格”?

    我想使用 openpyxl 格式化 Excel 工作表中的列单元格 使其数字小数位为 0 示例表 B C 63245634566 NAME 63562341234 NAME 23452345345 NAME 21345234554 NAME
  • Jetpack Compose 矢量解析问题

    我正在尝试加载向量 但不断收到此错误堆栈跟踪 java lang IllegalArgumentException Unknown command for R at androidx compose ui graphics vector P
  • 如何在 TCL 中创建并迭代哈希值的哈希值?

    如何在 TCL 中创建并迭代哈希值的哈希值 如果我有这样的数据 foo a gt aa gt aa1 aa2 aa3 ab gt ab1 ab2 ab3 ac gt ac1 ac2 ac3 b gt ba gt ba1 ba2 ba3 bb
  • 带计时器的自动静音 Android 设备设置我的用户

    我的应用程序中有 2 个按钮 开始时间和结束时间 现在我希望设备在用户设置的开始和结束持续时间内进入静音模式 我该怎么做 我的用于获取开始时间和结束时间输入的代码mainactivity java code包 com example h m
  • 在C中通过名称获取进程ID

    我试图通过进程名称获取进程 ID 例如 notepad exe 但之前 Stack Overflow 上的解决方案似乎无法正常工作 这是我尝试过的 DWORD FindProcessId const char processname HAN
  • Sencha touch 2 + Apple 推送通知 + Ext.device.Push

    我最近开始使用 Sencha Touch 2 进行开发 目前我正在创建一个需要 Apple 推送通知支持的应用程序 因此 我在 Apple 开发人员中心创建了必要的证书 并使用它们将应用程序与 Sencha Touch SDK 工具打包在一
  • XML 1.0 和 XML 2.0 之间的区别

    XML 1 0 和 XML 2 0 有什么区别 XML 2 0 从来没有出现过 即使是草案也是如此 有一个并不完全流行的 XML 1 1 标准 它有三个主要变化 其中最重要的变化是在 XML 1 0 第五版中就地应用于 XML 1 0 这一
  • 如何计算 3d numpy 数组中的凸包图像/体积

    我想知道是否有任何基于 numpy 的工具可以 给定 3D 二进制输入 numpy 图像 找到其凸包 并返回此 3D 凸包内的索引或类似体素 3D 像素 列表 一种可能性是使用skimage morphology convex hull i
  • 将 void*(*)(void*) 类型转换为 void(*)(void)

    作为作业的一部分 我试图创建一个像 pthreads 这样的用户级线程库 为了处理线程之间的上下文切换 我使用 swapcontext 函数 在使用它之前 我必须使用 makecontext 函数创建一个上下文 makecontext 需要
  • 使用 Python 将文件夹上传到 Google Cloud Storage?

    我找到了 upload from file 和 upload from filename 但是是否有函数或方法可以通过 Python 将整个文件夹上传到 Cloud Storage 这对我有用 将所有内容从本地目录复制到谷歌云存储中的特定存
  • 从 python 中的单独文件导入列表变量

    脚本 py list one two three python script here 我的列表变得非常长 大约 400 行 有没有办法让变量list在一个单独的 py 文件中并导入它 或者我应该有单独的文件并通过迭代创建一个列表 list
  • MySQL 使用另一个表中的列名

    我想知道是否可以返回一个结果集 其列名存储在单独的表中 这是可能的还是我需要一个带有变量的存储过程 请参阅 mysql dump 的链接和所需结果集的描述 http pastie org 584865 http pastie org 584
  • RabbitMQ:在直接交换中创建动态队列

    我是 RabbitMQ 的新手 我刚刚浏览了 Rabbitmq 文档 路由 我对 Exchange 与路由键之间的关系感到非常困惑 我的要求是 我想动态创建多个队列 请参考下图 前任 假设如果生产者为消费者 c3 创建消息 那么它应该转到
  • 使用 JAXB 从 XML 字符串创建对象

    如何使用下面的代码来解组 XML 字符串并将其映射到下面的 JAXB 对象 JAXBContext jaxbContext JAXBContext newInstance Person class Unmarshaller unmarsha
  • 如何记住自定义 React hook

    const useSomeHook number gt const newNumber setNewNumber useState 0 useEffect gt setNewNumber number 1 number const Some