【问题标题】:react query with typescript用打字稿反应查询
【发布时间】:2021-08-11 16:15:38
【问题描述】:

我正在尝试使用 react guery 从这个函数中获取一些 sata。

export const quotaReservationRefundServiceBankAccount = (
  id: string,
  bankAccountInformation: IBankAccountInformation,
  quotaLegal?: string,
): Promise<Response> => {
  const url = `${appSettings.bffUrl}/api/pregnancies/quotareservations/${id}/bankaccount/refund`;
  const body: IRefundQuotaReservationRequest = {
    language: appSettings.language,
    bankAccountInformation,
    legalDepartmentShortCode: quotaLegal || "",
  };
  return post(url, body);
};

我得到了这个票价:

  const { data: testData, isLoading, error } = useQuery<string, IBankAccountInformation, string | undefined>(["bankRefundResponse",  quota?.reservation || "Quota.reservation missing", bankAccountInfo, quota.legal], quotaReservationRefundServiceBankAccount, {

      });

Typescript 给了我这个错误:

'(id: string, bankAccountInformation: IBankAccountInformation, quotaLegal?: 字符串 |未定义)=> Promise' 不可分配给类型参数 'QueryFunction'.ts(2345)

【问题讨论】:

    标签: typescript react-query


    【解决方案1】:

    参数通过 queryKey 传递给 queryFn,因此您可以破坏 queryKey(queryFn 的第一个参数)或仅使用内联函数:

    useQuery(["key", id, bankAccountInformation, quota], () => quotaReservationRefundServiceBankAccount(id, bankAccountInformation, quota))
    

    【讨论】:

    • 它给了我这个错误:Type 'Promise' is notassignable to type 'string |承诺'。类型“Promise”不可分配给类型“Promise”。类型 'Response' 不可分配给类型 'string'.ts(2322) types.d.ts(7, 89):预期类型来自此签名的返回类型。
    • 可能是因为 quotaReservationRefundServiceBankAccount 返回 Promise,但您输入了 useQuery。您是否尝试过 useQuery 而不像我上面的示例那样注释泛型?
    • 看起来可行。承诺后我将如何获取数据。我需要 json() 我猜的响应。
    • 这很可能发生在quotaReservationRefundServiceBankAccountreturn post(url, body).then(response=&gt; response.json());
    • 如果其中一个参数可能未定义,您会怎么做。然后可以停止查询吗?现在你不能在一个条件下说 react-query。
    猜你喜欢
    • 1970-01-01
    • 2022-08-13
    • 2019-07-11
    • 1970-01-01
    • 2021-11-30
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多