能否向未声明形参的React Hook传递参数?
React自定义Hook入参定义问题解答
你需要在useHook的函数定义中补充对应形参来接收传入值,保留无参定义的做法完全不可行,原因如下:
- 从JavaScript语法规则来说,给未声明形参的函数传参不会触发语法报错,但你在函数内部没有对应形参的话,根本无法读取调用方传入的
{thingy1, thingy2, thingy3}对象。虽然可以通过arguments对象取传入值,但这种写法完全不符合React Hook的编码规范,属于没必要的奇技淫巧,测评场景下绝对不推荐。 - 你提到的“不能随意修改指定代码”的规则,约束范围是已经写死的调用侧代码(也就是
thing.jsx里的Hook调用逻辑),你修改的是待实现的useHook.js内部逻辑,给待实现的函数补充形参是完成功能的必要步骤,不属于违规修改。
正确写法参考
你可以直接在形参位置解构传入的对象,方便后续逻辑直接使用传入值:
// useHook.js function useHook({ thingy1, thingy2, thingy3 }) { // 此处即可基于传入的三个参数实现Hook逻辑 // 完成状态定义、副作用处理、返回值封装等操作 } export default useHook;
如果后续可能扩展入参字段,也可以先接收整个配置对象,再在函数内部解构:
// useHook.js function useHook(config) { const { thingy1, thingy2, thingy3 } = config; // 后续逻辑实现 } export default useHook;
注意:不要保留无参的Hook定义,这种写法下你完全拿不到调用方传入的配置参数,根本无法实现指定功能,必然无法通过测评。
内容的提问来源于stack exchange,提问作者Rikudou
相关产品推荐
相关产品推荐

