I want to call an API in React after a function has been executed.
const [isVisible, setVisible] = useState(false);
const [isValid, setValidation] = useState(true);
const [validationMessage, setValidationMessage] = useState('');
const validate = (callback) => {
if (code == null || code.trim().length === 0) {
setValidation(false);
setValidationMessage(translate.signIn.codeErrorMessage);
setVisible(true);
} else if (phoneNumber == null || phoneNumber.trim().length === 0) {
setValidation(false);
setValidationMessage(translate.signIn.phoneErrorMessage);
setVisible(true);
}
callback();
}
const authenticate = async () => {
try {
return await (authenticateUser.get('/abc', {
params: {
code,
phoneNumber,
}
}));
}
catch (e) {
setValidationMessage(translate.signIn.exceptionMessage);
setVisible(true);
}
}
const validateUserCredentials = () => {
if (isValid) {
setActivitySpinner(true);
authenticate().then(response => {
setActivitySpinner(false);
const responseData = response.data;
console.log('responseData', responseData);
if(responseData.status !== 200) {
setVisible(true);
setValidationMessage(responseData.message);
}
else if(responseData.status === 200) {
console.log('success');
}
});
}
}
const onSubmit = () => {
validate(validateUserCredentials);
}
When I invoke 'onSubmit' function, even if the value of isValid is false. I can see the API is being called. I want to call the function validateUserCredentials only after the function validate has done its task.
Can anyone please tell me what am I doing wrong here?