Вы можете получить обратный вызов, когда компонент размонтируется или повторно монтируется в результате изменения одной из useEffect
зависимостей, путем возврата функции из useEffect
. Вы можете использовать это, чтобы установить флаг, чтобы знать, что что-то изменилось. См. ***
комментарии:
useEffect(() => {
let cancelled = false; // *** A flag to let us know this is cancelled
const getToken = async () => {
const mytoken = await AsyncStorage.getItem("fb_token");
if (!cancelled) { // *** Check the flag
if (mytoken) {
navigation.navigate("Main", { screen: "Map" });
setToken(mytoken);
} else {
setToken(false);
}
}
};
getToken().catch(error => { // ***
// Handle/report error here... // *** Handle errors from the async function
}); // ***
// *** A callback to let us know to set the flag
return () => {
cancelled = true;
};
}, [navigation]);
(Вы также нарушаете одно из правил обещаний, помеченных выше: Всегда либо обрабатывать ошибки, либо передавать цепочку обещаний чему-то, что будет.)
Обратите внимание, что, как я уже упоминал ранее, установка токена будет пропущена в двух ситуациях:
Компонент отключен (тот что вызывало проблемы)
navigation
изменено