【问题标题】:How to stop Redux RTK query from retrying on error如何阻止 Redux RTK 查询重试错误
【发布时间】:2022-06-22 20:23:02
【问题描述】:

我有一些请求可能会返回 404。当他们这样做时,RTK 查询将发送重试,导致数百个失败的请求。为什么它会尝试重新获取错误,我该怎么办?

【问题讨论】:

    标签: reactjs redux rtk-query


    【解决方案1】:

    如果你的endpoint出错,RTK Query的useQuery会在两种情况下发送请求:

    • 您更改了参数(这总是会导致新的请求)
    • 您使用此useQuery 安装组件。

    因此,如果没有看到您的代码,我会假设您的组件以某种方式重新安装,因此在安装后会导致另一个请求。

    【讨论】:

      【解决方案2】:

      作为docs say,对于自定义错误处理,我们可以使用queryFn

      使用不同错误处理行为的一次性查询

      因此,如果出于任何原因,您想缓存错误请求,您可以这样做:

      getPokemon: build.query<Pokemon, string>({
        async queryFn(name, api, extraOptions, baseQuery) {
          const result = await baseQuery({
            url: `https://pokeapi.co/api/v2/pokemon/${name}`,
            method: 'GET'
          });
      
          if (result.error?.status === 404) {
            // don't refetch on 404
            return { data: result.data as Pokemon };
          }
      
          if (result.error) {
            // but refetch on another error
            return { error: result.error };
          }
      
          return { data: result.data as Pokemon };
        }
      }),
      

      【讨论】:

        猜你喜欢
        • 2022-12-17
        • 2021-12-29
        • 2021-11-04
        • 2021-12-18
        • 2021-09-10
        • 2023-02-09
        • 2021-11-04
        • 2021-02-06
        • 2021-12-21
        相关资源
        最近更新 更多