首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当查询param无效时不要发送请求

当查询param无效时不要发送请求
EN

Stack Overflow用户
提问于 2022-01-28 19:48:20
回答 1查看 580关注 0票数 7

我检查了redux工具包文档,没有看到这个典型用例的示例:不要发送查询的请求,有一个无效的param。

例如,对端点/类别/{ name }的get请求需要一个名称值。如果名称没有值,则不应发出请求。

代码语言:javascript
复制
const baseQuery = fetchBaseQuery({
  baseUrl: Constants.PATHWAY_API_URL
});

export const pathwayApi = createApi({
  reducerPath: 'pathwayApi',
  baseQuery: baseQueryWithReAuth,
  endpoints: builder => ({
    getSubCategories: builder.query({
      // NETWORK REQUEST SHOULD NOT BE MADE IF "name" param is falsy
      query: name => `${Constants.PATHWAY_API.CATEGORIES_PATH_NAME}/${name}`,
    }),
  }),
});

我希望将这种类型的param验证添加到所有需要param值或值的查询中。在createApi (或者可能是fetchBaseQuery)层处理此验证的推荐方法/模式是什么?提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-05 22:04:02

实际上,您可以在throw函数中使用query错误。

代码语言:javascript
复制
export const pathwayApi = createApi({
  reducerPath: "pathwayApi",
  baseQuery: baseQueryWithReAuth,
  endpoints: (builder) => ({
    getSubCategories: builder.query({
      // NETWORK REQUEST SHOULD NOT BE MADE IF "name" param is falsy
      query: (name) => {
        if (!name) {
          throw new Error("Category name is required.");
        }
        return `${Constants.PATHWAY_API.CATEGORIES_PATH_NAME}/${name}`;
      }
    })
  })
});

当发生这种情况时,您的钩子将有isError: true,但不会发出网络请求。钩子的error属性将是一个具有属性namemessagestackSerializedError对象,您可以使用这些属性在UI中显示错误。

如果代码中有一个TypeError,那么这是相同类型的错误对象。注意,JavaScript错误将具有error.message,而API错误(FetchBaseQueryError)将具有error.error

代码语言:javascript
复制
const Category = ({ name }) => {
  const { data, error, isError } = useGetSubCategoriesQuery(name);

  return (
    <div>
      <h3>Name: "{name}"</h3>
      {isError && (
          <div>{error?.error ?? error?.message}</div>
      )}
    </div>
  );
};

CodeSandbox链路

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70899492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档