反应查询 mutateAsync 中的错误处理
Error handling in react-query mutateAsync
我正在学习 react-query
,我想在 useMutation
API 中使用 mutateAsync
。这是我的代码:
import { useMutation } from "react-query";
const asyncCall = () => {
return new Promise((resolve, reject) =>
setTimeout(() => reject("reject"), 1000)
);
};
const Home = () => {
const { mutateAsync } = useMutation(asyncCall);
const handleClick = async () => {
try {
const res = await mutateAsync();
} catch (err) {
console.log("catch error"); // output: catch error
}
};
return (
<div>
<button onClick={() => handleClick()}>Click</button>
</div>
);
};
export default Home;
现在我的代码可以成功捕获来自 asyncCall
的错误 returns,但我在控制台中看到警告:
详情:
所以它说错误来自 handleClick
函数,但我认为 try...catch
已经解决了这个错误?为什么会有警告?我该如何解决?
我做了一个演示here。
谢谢!
默认情况下,react-query 会将所有错误记录到控制台。如果你不想这样,你可以覆盖 setLogger
: https://react-query.tanstack.com/reference/setLogger
import { setLogger } from 'react-query'
setLogger({
log: console.log,
warn: console.warn,
error: () => {}, // do nothing
})
我正在学习 react-query
,我想在 useMutation
API 中使用 mutateAsync
。这是我的代码:
import { useMutation } from "react-query";
const asyncCall = () => {
return new Promise((resolve, reject) =>
setTimeout(() => reject("reject"), 1000)
);
};
const Home = () => {
const { mutateAsync } = useMutation(asyncCall);
const handleClick = async () => {
try {
const res = await mutateAsync();
} catch (err) {
console.log("catch error"); // output: catch error
}
};
return (
<div>
<button onClick={() => handleClick()}>Click</button>
</div>
);
};
export default Home;
现在我的代码可以成功捕获来自 asyncCall
的错误 returns,但我在控制台中看到警告:
详情:
所以它说错误来自 handleClick
函数,但我认为 try...catch
已经解决了这个错误?为什么会有警告?我该如何解决?
我做了一个演示here。
谢谢!
默认情况下,react-query 会将所有错误记录到控制台。如果你不想这样,你可以覆盖 setLogger
: https://react-query.tanstack.com/reference/setLogger
import { setLogger } from 'react-query'
setLogger({
log: console.log,
warn: console.warn,
error: () => {}, // do nothing
})