Я пытался выполнить маршрутизацию в соответствии с проверкой пользователя, и я это сделал, но мой метод сработал два раза. я понял это из моего журнала
Я использую redux, и вот мой "useeffect" в mainrouter. js
// currentUser : null // in initialState for users
useEffect(() => {
if(states.currentUser== null)
{
console.log("Checking user for routing");
actions.getCurrentUserACT();
}
else{
console.log("Logged in")
}
},[]);
мой mainrouter. js return
return (
<NavigationContainer>
{
states.currentUser == null ?
(this.SignStackScreen()) :
(this.MainTabNavigator())
}
</NavigationContainer>
);
вот мой метод getCurrentUserAct в действиях redux
export function getCurrentUserACT() {
return function (dispatch) {
firebase.auth().onAuthStateChanged(user => {
if (user) {
console.log("User authed..");
dispatch({type:actionTypes.CURRENT_USER,payload:user})
} else {
console.log("User notauthed..");
dispatch({type:actionTypes.CURRENT_USER,payload:null})
}
});
}
при запуске моего приложения журналы ... (если я входил в систему раньше)
- Проверка пользователя для маршрутизации
- Пользователь авторизован
- Пользователь авторизован
Я думаю, причина этого, useeffect сработал в первый раз, и состояние изменилось, которое используется при возврате и повторной визуализации ", но затем я удалил состояние, журналы были такими же.
так как я могу этого избежать? есть ли способ запустить метод раньше из useeffect и избежать второй рендер? или ждать данные в использовании эффект?