在将react-scripts
从v4升级到v5之后,我遇到了react-query
^3.34.8的问题。
我拒绝了useMutation
中的一个promise,它导致了运行时错误Uncaught (in promise)
:
// Component.js
import useDeleteMutation from './useDeleteMutation';
export default function Component(){
const { mutateAsync: delete } = useDeleteMutation();
return (
<button onClick={delete}>Delete</button>
);
}
// useDeleteMutation.js
import { useMutation } from 'react-query';
export default function useDeleteMutation() {
return useMutation(
async () => {
return Promise.reject('Simulate failure');
},
)
};
阅读this和this,我似乎错过了一个try/catch。然而,我已经尝试添加它们(围绕对delete()
的调用和围绕Promise.reject
语句),但运行时错误仍然存在。
知道我错过了什么吗我还可以在try/catch中 Package 什么?我不想只是在create-react-app的配置中关闭警告。
谢谢
2条答案
按热度按时间hmae6n7t1#
mutate
代替mutateAsync
。它将在内部捕获错误。hgb9j2n62#
将
.catch
附加到delete
调用,并调整useMutation钩子返回的内容,修复了错误: