是否可以将一个钩子包裹在另一个钩子中

时间:2020-11-11 22:43:28

标签: reactjs react-hooks react-async

我正在尝试找出如何更改现有挂钩的行为,特别是react-async库提供的useAsync挂钩。这是向API发出异步请求的一个钩子。

我想通过多种方式来改变钩子的行为,例如在运行查询之前检查auth令牌,如果找不到该令牌则保持呼叫,并处理错误。每次拨打电话时都保持一致的方式。

因此,我是否可以创建一个新的钩子-useWrappedAsync,它可以在后台使用对useAsync的调用,并将所有从useAsync返回的值公开给useWrappedAsync的被调用者?像这样的东西。

import{ useAsync } from "react-async";

function useWrappedAsync(options) {

  const {specialOption1, specialOption2, ...asyncOptions} = options

  ... code here for checking token in redux etc.
  
  const internalAsync = useAsync(asyncOptions)

  const wrappedAsync = {newParam1, newParam2, ...internalAsync}

  return wrappedAsync

}

因此,我可以在调用它时添加新的参数,但是在使用react-async之前我将其删除。在从useAsync挂钩添加所有参数之前,我还能够向返回的值公开新的参数。

我不确定我是否正确。我“认为”它应该起作用,但是我找不到任何示例。这是常见的模式吗?有没有更好的更明显的方法?两次调用包装的钩子会不会有问题?

任何帮助将不胜感激。

0 个答案:

没有答案