我正在使用Reaction Query作为数据处理程序.我对本机的react 是新的,对查询的react 也是新的.

现在我真的不明白为什么onError回调不能处理我的错误.错误回调由错误触发,错误仍然转到函数中的Catch处理程序(这是我不想要的).

我有以下设置/ struct :

API层中的Axios.不试着接球. UseMutation Setup(使用Mutation Setup),其中mutuationFn指向"axios API请求". ClickHandler触发一个进行Mutations 的函数.

const mutation = useMutation({
    mutationFn: (req: TimeReportRequest) => {
      return updateTimeReport(timeReport?.id!, req);
    },
    onSuccess: (data) => {
      queryClient.invalidateQueries({ queryKey: ['timeReports'] });
       
    },
    onError: (error) => {
      console.log('Im the error and i should not go further');
      errorMessageHandler(error);
    },
  });

const onSubmitTimeReport = () => {
    try {
      if (!timeReport) return;
      const req: TimeReportRequest = {
       ...
      };

      mutation.mutate(req);
    } catch (error) {
      console.log("im will recieve the error. But i shouldn't?. Error is not handled as a normal try-catch")
    }
    
  };
 

主要问题是错误没有得到正确的处理.如果我删除了REACT查询,直接使用api-layer(axios方法)并try 捕获,那么一切都会按预期进行.

What am i missing here?

推荐答案

我将自己回答这个问题,因为这里的主要问题是两件事:

  • Reaction本机和黄框如何与Reaction查询配合使用
  • 如何react 查询气泡事件

使用REACTIVE Native,REACT查询(在我的示例EXPO中)的第一件事是,所有错误代码>;300都将显示为来自黄色框的警告.我不知道这一点,这只是一个开发人员的警告.另外,如果你想运行一个演示,或者当一个API请求返回400时不应该显示警告的东西,你可以禁用yellowbox以避免不必要的问题.

第二,react 查询onError不会"捕捉"错误.它更像是一个中间件,您可以在其中有机会在出错时做一些事情.

因此,在许多场景中,您可以 Select 在onError方法中"捕捉"错误,或者将整个调用包装在try Catch中.或者,在某些情况下,您可能两者都需要.

React-native相关问答推荐

应用管理

我们在react钩子中还需要功能性的 setState 方式吗?

如何在带有decorator 的 react-native 0.56 (Babel 7) 中使用 mobx

React Native - 当位置在Android上是绝对时视图消失

TabNavigator 中的 React Navigation 传递props

如何运行 React-Native 示例?

如何为 Picker 提供默认的Please select...选项?

react-native 链接仅适用于一个项目(Android 或 iOS)

如何在 React-Native Android 中检测拖动事件的结束

React-native 解码 base64 编码字符串

React-Native 应用程序的 Jest 测试 Animated.View

React Native 错误找不到模块metro-config/src/defaults/blacklist

如何将组件中的props传递给 FlatList renderItem

如何在 react-native 上自动聚焦下一个 TextInput

在配置 react-native-maps 中获取 "supportLibVersion" 、 "playServicesVersion" 和 "androidMapsUtilsVersion" 值

如何将本地文本文件加载到 React Native Project 中的字符串变量中?

Ipad 上的 React Native - 错误 - could not connect to development server

ReactNative TextInput 不可见 iOS

react-native:多色文本视图

如何为 TouchableOpacity 组件创建禁用样式?