可以创建实际上不调用其他钩子的 React 自定义钩子吗?

时间:2021-07-11 23:44:15

标签: reactjs react-hooks

我知道 React 自定义钩子只是常规函数,但以“use”为前缀来向 React 表明它们是自定义钩子。这让他们可以使用内置的 React 钩子(或其他自定义钩子)。

我创建了一个以“use”为前缀的函数,原本打算作为一个自定义钩子,但我意识到它实际上并不需要调用任何其他 React 钩子。我应该重命名我的函数以使其不再被视为钩子吗?是否还有其他影响需要考虑(例如性能?)。这个主题有标准约定吗?

1 个答案:

答案 0 :(得分:3)

如果您的钩子不依赖于任何其他钩子,则应将其转换为普通函数。 自定义 Hook 提供了共享逻辑的灵活性,这在之前的 React 组件中是不可能的。

<块引用>
  1. Hooks 只能从 React 代码中调用,不能从常规代码中调用 JS函数。因此,Hooks 的范围仅限于 React 代码世界 并且有更多的能力用 React 代码做很多事情。而不是 JS, 常规函数可以跨应用程序使用,但作为反应代码 指导方针使代码更符合反应语法。

  2. 在基于类的组件中,Hooks 不会工作,但会正常工作 功能将。

  3. 在常规的JS函数中,不能访问useStateuseEffectuseReducer 等,但我可以响应自定义钩子。

在此处回答:https://stackoverflow.com/a/60133908/1723410