useRef记住反应自定义钩子

时间:2020-08-26 11:43:09

标签: reactjs

我可以使用useRef()来从自定义钩子中记住对象吗?因为如果没有这种情况,当我使用从挂钩中返回的对象作为useEffect依赖项时,就会得到请求的无限循环。

我现在使用的代码示例:

  const apiHook = useRef({})
  apiHook.current = useRequest(
    'http://someapi',
    {
      onSuccess: (data) => {
        console.log(data)
      }
    }
  )
  useEffect(() => {
    apiHook.current.run()
  }, [])

2 个答案:

答案 0 :(得分:2)

您可能想要类似的东西

function Component() {
  const apiResp = useRequest('http://someapi');
  useEffect(() => {
    console.log(`New data: ${apiResp.data}`);
  }, [apiResp.data]);
}

即仅将useRequest数据用作依赖项。

答案 1 :(得分:1)

useRequest的第一个参数是一个返回诺言的函数: ()=> axios(url)

axios示例:Here

具有自定义useApi的示例:Here