admin管理员组文章数量:1202038
I am trying to use axios to login and passing back the response but the somehow the response is always undefined.
const handleLogin = async (
e: React.MouseEvent<HTMLButtonElement, MouseEvent>,
) => {
e.preventDefault();
await Login(email, password).then((response) => {
console.log('response' + response);
router.push('/profile');
});
};
server code
await axios
.post(
'http://127.0.0.1:3333/auth/signin',
{ email: email, password: password },
{ headers: { 'content-type': 'application/x-www-form-urlencoded' } },
)
.then((response) => {
const accessToken = response.data.accessToken || '';
const refreshToken = response.data.refreshToken || '';
// localStorage.setItem('access_token', accessToken);
// localStorage.setItem('refresh_token', refreshToken);
if (accessToken != '' && refreshToken != '') {
cookies().set('access_token', accessToken);
cookies().set('refresh_token', refreshToken);
console.log('Authenticated successfully:', response.data);
}
return response.data;
})
.catch((error) => {
console.error('Authentication failed:', error);
return { props: error };
});
I am trying to use axios to login and passing back the response but the somehow the response is always undefined.
const handleLogin = async (
e: React.MouseEvent<HTMLButtonElement, MouseEvent>,
) => {
e.preventDefault();
await Login(email, password).then((response) => {
console.log('response' + response);
router.push('/profile');
});
};
server code
await axios
.post(
'http://127.0.0.1:3333/auth/signin',
{ email: email, password: password },
{ headers: { 'content-type': 'application/x-www-form-urlencoded' } },
)
.then((response) => {
const accessToken = response.data.accessToken || '';
const refreshToken = response.data.refreshToken || '';
// localStorage.setItem('access_token', accessToken);
// localStorage.setItem('refresh_token', refreshToken);
if (accessToken != '' && refreshToken != '') {
cookies().set('access_token', accessToken);
cookies().set('refresh_token', refreshToken);
console.log('Authenticated successfully:', response.data);
}
return response.data;
})
.catch((error) => {
console.error('Authentication failed:', error);
return { props: error };
});
Share
Improve this question
edited Jan 21 at 22:05
Phil
165k25 gold badges259 silver badges267 bronze badges
asked Jan 21 at 18:36
user1688346user1688346
1,9705 gold badges26 silver badges49 bronze badges
1
|
1 Answer
Reset to default 1Update your code to use async await correctly. You're mixing with it with .then/catch.
Here is your code updated by using async await correctly, you should be able to see your response data now. Also for error handling try/catch is a nice way to handle errors with async await.
const handleLogin = async (
e: React.MouseEvent<HTMLButtonElement, MouseEvent>,
) => {
e.preventDefault();
const response = await Login(email, password)
console.log('response' + response);
router.push('/profile');
};
try {
const response = await axios.post(
'http://127.0.0.1:3333/auth/signin',
{ email: email, password: password },
{ headers: { 'content-type': 'application/x-www-form-urlencoded' } },
);
const accessToken = response.data.accessToken || '';
const refreshToken = response.data.refreshToken || '';
// localStorage.setItem('access_token', accessToken);
// localStorage.setItem('refresh_token', refreshToken);
if (accessToken !== '' && refreshToken !== '') {
cookies().set('access_token', accessToken);
cookies().set('refresh_token', refreshToken);
console.log('Authenticated successfully:', response.data);
}
return response.data;
} catch (error) {
console.error('Authentication failed:', error);
return { props: error };
}
本文标签: typescriptpass Axios response from server to clientStack Overflow
版权声明:本文标题:typescript - pass Axios response from server to client - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1738606342a2102368.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
await
with.then()
/.catch()
. It only leads to confusing code and incorrect return values – Phil Commented Jan 21 at 22:07