redux 为什么查询错误处理后仍会出现在控制台?RTK Query + React

ffdz8vbo  于 12个月前  发布在  React
关注(0)|答案(2)|浏览(170)

这是我的错误处理程序:

export const onAuthQueryStartedErrorToast = async (
  _: any,
  { queryFulfilled }: any,
) => {
  try {
    await queryFulfilled;
  } catch (error) {
    const isError = error as AuthErrorType;

    if (isError.error.data) {
      toast.warn(defineMessage(isError.error.data.message));
    } else {
      toast.warn("some error occured");
    }
  }
};

字符串
这是我的端点和我想要处理的查询

export const AuthService = baseApi.injectEndpoints({
  endpoints: (builder) => {
    return {
      authMe: builder.query<AuthMeResponseType, void>({
        query: () => ({
          url: "v1/auth/me",
          method: "GET",
        }),
        onQueryStarted: onAuthQueryStartedErrorToast,
        providesTags: ["Auth"],
      }), ... }


错误处理工作正常,我得到了带有消息的吐司,但是控制台错误401仍然存在,我不知道如何摆脱它。看起来它在处理程序之前将错误记录到控制台(如果有意义的话)。有什么想法吗?

qgelzfjb

qgelzfjb1#

据我所知,这是默认的浏览器行为,网络错误将被记录到控制台,你无法从你的网页/应用程序中做任何事情来改变或阻止这一点。看到这些日志并不一定意味着应用程序中没有正确处理某些事情。
但是,您可以做的是在控制台中更改您实际看到的内容,换句话说,您可以从控制台中“过滤”错误。
在浏览器的devtools中,您可以更改日志记录级别以从记录的输出中删 debugging 误。
示例如下:

  • Chrome:取消选择显示所有输出的“详细”,并取消选择“错误”以不输出错误日志。

x1c 0d1x的数据

  • Safari:选择除“全部”或任何包含“错误”的多选之外的任何选项。



其他浏览器应该有类似的设置。

**注意:**更改这些设置仅影响 * 您的 * 浏览器。您的页面/应用的用户仍然可以按照自己的喜好配置浏览器,并查看浏览器生成的日志。

还请注意,这将隐藏页面生成的 * 所有 * 错误,而不仅仅是网络错误,因此在开发过程中请注意这一点,您可能需要在以后重新启用错误日志记录以查看重要信息。请自行决定使用。

nue99wik

nue99wik2#

  • 您可以在查询中使用onError回调,因此此回调允许您阻止默认错误行为,包括控制台日志记录。*
onQueryStarted: onAuthQueryStartedErrorToast,
providesTags: ["Auth"],
onError: (error, { queryFulfilled }) => {
  const isError = error as AuthErrorType;

  if (isError.error.data) {
    toast.warn(defineMessage(isError.error.data.message));
  } else {
    toast.warn("some error occurred");
  }
  queryFulfilled.rejectWithValue(error);
},

字符串
})

相关问题