У меня есть этот компонент в реакции, который вернет заголовок «Загрузка», заголовок «Вошел в систему» или заголовок «Не вошел в систему», в зависимости от состояния.
Я сделал состояние так, чтобы оно обновлялось и менялось с «Загрузка» на «Вошел в систему» или «Не вошел в систему», как только обещание isLoggedIn
возвращает значение либо true
, либо false
.
Тем не менее, мой второй статус If всегда условно оказывается ложным и, следовательно, всегда возвращает «Не вошел в систему» в качестве заголовка, даже если обещание возвращает true (говоря, что пользователь вошел в систему).
Вот код:
function UserProfileNavItem(props) {
const [profiledLoaded, sethasLoaded] = useState(false);
var isLoggedInLocal = false;
isLoggedIn().then((res) => {
if (res) {
console.info("We are logged in");
isLoggedInLocal = true;
}else{
console.info("We are not logged in");
}
sethasLoaded(true);
});
if (!profiledLoaded) {
return (
<h1>Loading</h1>
);
}
if (!isLoggedInLocal) {
return (
<h1>Not Logged In</h1> // THIS IS ALWAYS SENT BACK EVEN IF isLoggedInLocal IS TRUE
);
} else {
return (
<h1>Logged In</h1> // THIS IS NEVER SENT BACK
);
}
}
Не думайте, что мне нужно показывать свое isLoggedIn
обещание, но спросите, если нужно.
(Да, я новичок, чтобы реагировать)
@sunero4 Логическое значение
Напишите var isLoggedInLocal = false;
как состояние, чтобы быть реактивным:
function UserProfileNavItem(props) {
const [profiledLoaded, sethasLoaded] = useState(false);
const [isLoggedInLocal , setIsLoggedInLocal ] = useState(false);
isLoggedIn().then((res) => {
if (res) {
console.info("We are logged in");
setIsLoggedInLocal(true);
}else{
console.info("We are not logged in");
}
sethasLoaded(true);
});
if (!profiledLoaded) {
return (
<h1>Loading</h1>
);
}
if (!isLoggedInLocal) {
return (
<h1>Not Logged In</h1> IS TRUE
);
} else {
return (
<h1>Logged In</h1>
);
}
}
Спасибо, это сработало. Я тоже учусь, поэтому просто быстрый вопрос ... все, что нужно повторно отобразить / проверить снова (например, если статус), должно быть в состоянии?
пожалуйста, да любая переменная, которая кажется важной для компонента, должна быть состоянием
Большое спасибо, я предполагаю, что react-redux сделает то же самое?
Да, но для глобального состояния
Ладно, спасибо за разъяснения. Одобрю ответ, когда смогу.
Что за объект "res"?