You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React自定义Hook嵌套场景:如何通过函数获取Hook返回结果

React自定义Hook嵌套场景的结果返回处理

先看你给出的原代码:

const fun = () => { 
  const result = useCustomHook() 
  console.log(result) 
}

const useCustomHook = () => { 
  const res = useNestCustomHook() 
  console.log(res) 
}

当前的问题很明确:useCustomHook虽然调用了useNestCustomHook,但并没有把后者的返回值纳入自身的返回结果里,导致fun函数中拿到的result完全看不到嵌套Hook的内容。

要解决这个问题,只需要让useCustomHook把嵌套Hook的返回值和自身逻辑的结果一起返回即可,具体分两种情况:

情况1:需要同时保留自定义Hook自身结果和嵌套Hook结果

修改useCustomHook,返回一个合并后的对象,把嵌套Hook的结果作为属性包含进去:

const useCustomHook = () => {
  const nestRes = useNestCustomHook()
  // 这里写useCustomHook自身的业务逻辑,生成自定义结果
  const customResult = {
    customData: 'some value'
  }

  // 返回合并后的结果
  return {
    ...customResult,
    nestRes // 把嵌套Hook的结果单独作为一个属性
  }
}

此时调用fun就能拿到完整结果:

const fun = () => {
  const result = useCustomHook()
  console.log('自定义Hook自身结果:', result.customData)
  console.log('嵌套Hook返回结果:', result.nestRes)
}

情况2:自定义Hook基于嵌套Hook的结果做扩展

如果useCustomHook的核心是对useNestCustomHook的结果做加工,直接返回加工后的对象(包含原嵌套结果)即可:

const useCustomHook = () => {
  const nestRes = useNestCustomHook()
  
  // 在嵌套Hook结果基础上添加自定义内容
  return {
    ...nestRes,
    extraInfo: '自定义扩展的信息'
  }
}

这样fun里拿到的result会包含useNestCustomHook的所有返回字段,再加上自定义的扩展内容。

内容的提问来源于stack exchange,提问作者Dhara Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 21:41:06