【发布时间】:2020-04-15 08:45:14
【问题描述】:
我一直在努力解决这个问题,但还没有找到强有力的答案。我正在尝试使用 useMutation 挂钩执行登录突变。
TLDR;我想知道options中传递的onError和useMutation给我的error之间到底有什么区别
这是我的代码 sn-p
const [login, { data, loading, error }] = useMutation(LOGIN_QUERY, {
variables: {
email,
password
},
onError(err) {
console.log(err);
},
});
在服务器端,我有一个用于登录的预设/硬编码电子邮件,我没有使用 Apollo 或任何其他客户端。在此登录突变的解析器中,如果使用的电子邮件不同,我只会抛出一个错误
throw new Error('Invalid Email');
现在我想在客户端(React)处理这个错误。但我担心的是,如果我使用从 useMutation 钩子返回的“错误”并尝试以这种方式显示错误
render() {
...
{error && <div> Error occurred </div>}
...
}
错误在 UI 中更新,但 React 立即向我显示了一个屏幕:
Unhandled Rejection (Error): Graphql error: My-custom-error-message
但是,如果我使用 onError 将 options 传递给 useMutate 函数,那么它不会显示这个屏幕,我可以做任何我想做的错误。
我想知道options 传入的onError 和useMutation 给我的error 之间到底有什么区别,为什么当onError 是未使用。
谢谢!
【问题讨论】:
标签: reactjs graphql react-apollo apollo-client