useRequest中的onBefore如果是一个校验方法,如何在校验不通过的时候,停止request?
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个回答

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
回调函数,并停止请求。
回复

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