如何实现一个“ isHook”功能?

时间:2019-03-25 09:14:47

标签: javascript reactjs

如何检测传递的函数是否是React Hook函数?

isHook(useState); // return true
isHook(() => {}); // return false;

我需要知道附加到对象属性的函数是否为钩子。如果它是另一个函数的“普通函数”,则需要调用该函数。

1 个答案:

答案 0 :(得分:1)

可以通过将内置挂钩与已知的React挂钩进行比较来识别

[React.useState, React.useReducer, /*...*/].includes(hookFn);

没有办法知道一个函数是否是自定义钩子,即一个在内部调用React内置钩子的函数。

如果某个函数可以自定义钩子,则应相应地hook rules对其进行调用,即在功能组件内部无条件调用。

反应custom hooks通常具有use...名称,这样开发人员可以通过视觉识别它们。切勿在客户端应用程序中通过名称来以编程方式标识它们,因为原始函数name在缩小过程中会丢失,并且可能根本不存在,这取决于函数的定义方式。