useRequest中的onBefore如果是一个校验方法,如何在校验不通过的时候,停止request?

作者站长头像
站长
· 阅读数 19
 const { loading: saveLoadSt, run: onFinish } = useRequest(onSave, {
    manual: true,
    onSuccess: (result) => {
      void message.success('更新成功!');
    },
    onError: (error) => {
      void message.error(error?.message ?? '接口请求失败~');
    },
    onBefore: async (params) => await validate(params),
  });
回复
1个回答
avatar
test
2024-06-28

如果在onBefore中进行校验,可以在校验不通过的时候抛出一个错误,这样就会触发onError回调函数,从而停止请求。

以下是一个示例代码:

const { loading: saveLoadSt, run: onFinish } = useRequest(onSave, {
  manual: true,
  onSuccess: (result) => {
    void message.success('更新成功!');
  },
  onError: (error) => {
    void message.error(error?.message ?? '接口请求失败~');
  },
  onBefore: async (params) => {
    const isValid = await validate(params);
    if (!isValid) {
      throw new Error('校验不通过');
    }
  },
});

在上面的代码中,如果validate方法返回的结果为false,则会抛出一个错误,从而触发onError回调函数,并停止请求。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容