如果 API 返回错误
404
,我正在尝试调用导航函数将用户从屏幕 A 导航到屏幕 B。如果用户尚未创建配置文件,那么 API 将返回错误 404
状态代码,我将在 catch 块中捕获它,然后我将检查状态代码是否为 404
如果是,那么我将导航用户创建个人资料屏幕。所以我得到 404
并且控制台日志正在终端中打印,但在第一次渲染时,它没有导航用户或者该函数没有在 iOS 中被调用。
使用效果代码:
useEffect(() => {
const isUserCreatedProfile = async (loggedInUserInfo) => {
try {
await axios
.get(`${baseUrl}/api/user/profile?email=${loggedInUserInfo?.email}`, {
headers: apiHeaders,
})
.then((res) => {
// Some logic
})
.catch((err) => {
componentErrorHandler("home", "isUserCreatedProfile[axios]", err);
if (err?.response?.status === 404) {
console.log("err got", err?.response?.status);
navigateToCreateProfile(
loggedInUserInfo["custom:Name"],
loggedInUserInfo?.email,
);
console.log("err got here");
}
console.log("err got here 2");
setLoading(false);
});
} catch (err) {
componentErrorHandler("home", "isUserCreatedProfile", err);
}
};
if (userInfo?.data) {
isUserCreatedProfile(userInfo?.data);
}
}, [
chatData?.connected,
connectUserChat,
navigateToCreateProfile,
navigation,
setUserInfo,
token?.accessToken,
userInfo,
userLocationSave,
]);
导航功能代码:
const navigateToCreateProfile = useCallback(
(name, email) => {
console.log("called navigation");
navigation.replace("CreateProfile", {
name,
email,
});
},
[navigation],
);
终端日志:
LOG home isUserCreatedProfile[axios] [AxiosError: Request failed with status code 404]
LOG err got 404
LOG called navigation
LOG err got here
LOG err got here 2
我也尝试过删除函数
navigateToCreateProfile
并将其代码仅添加到catch块中,但它在iOS中仍然不起作用。
仅当我再次刷新应用程序,然后调用导航功能时,它才有效。
PS:它在 Android 上运行得非常好。
我无法弄清楚这个问题。我该如何解决?
const navigateToCreateProfile = useCallback(
(name, email) => {
console.log("called navigation");
navigation && navigation.replace("CreateProfile", {
name,
email,
});
},
[navigation],
);