Apollo使用useMutation时,onCompleted回调函数返回的值取决于后端服务器返回的数据。因此,onCompleted回调函数不一定始终返回true。
下面是一个使用useMutation的示例代码,展示了如何在登录认证期间处理onCompleted回调函数的返回值。
import { useMutation } from '@apollo/client';
import { LOGIN_MUTATION } from './mutations';
const LoginForm = () => {
const [login, { loading, error }] = useMutation(LOGIN_MUTATION, {
onCompleted: (data) => {
// 处理登录成功后的逻辑
if (data.login.success) {
console.log('登录成功');
// 执行其他操作
} else {
console.log('登录失败');
// 执行其他操作
}
},
});
const handleLoginFormSubmit = (e) => {
e.preventDefault();
const username = e.target.username.value;
const password = e.target.password.value;
login({ variables: { username, password } });
};
if (loading) {
return Loading...
;
}
if (error) {
return Error: {error.message}
;
}
return (
);
};
export default LoginForm;
在上面的示例代码中,onCompleted回调函数根据服务器返回的数据中的success字段来判断登录是否成功。如果success为true,则执行登录成功的逻辑,否则执行登录失败的逻辑。
请注意,在实际使用中,你需要根据自己后端服务器返回的数据格式进行相应地修改。