前提・実現したいこと
ReactNativeでアプリのフロントエンドを作成しています。
ログイン・ログアウトができるのですが、アプリのタスクを切った後にもう一度起動して、
ログアウトをすると、ログイン画面に戻りません。
正常な動きは以下になります。
ログイン画面でログイン→アカウントページに入る→ログアウトする→ログイン画面に戻る
しかし、
ログイン画面でログイン→アカウントページに入る→アプリのタスクを切る→アプリを起動→アカウントページに入る
→ログアウトする→returnで返しているページが表示される
というふうになってしまいます。
該当のソースコード
最初の読み込み画面
Javascript
1const AppNavContainer = ()=>{ 2 3 const {authState:{isLoggedIn}} = useContext(GlobalContext); 4 5 const [isAuthenticated, setIsAuthenticated] = useState(isLoggedIn); 6 const [authLoaded, setAuthLoaded] = useState(false); 7 8 const getUser = async ()=>{ 9 try{ 10 const user = await AsyncStorage.getItem('email'); 11 if(user){ 12 setAuthLoaded(true); 13 setIsAuthenticated(true); 14 } 15 else{ 16 setAuthLoaded(true); 17 setIsAuthenticated(false); 18 } 19 }catch(error){} 20 }; 21 /* 22 useEffect(()=>{ 23 SplashScreen.hide(); 24 },[]); 25 */ 26 27 useEffect(()=>{ 28 getUser(); 29 }, [isLoggedIn]); 30 31 return ( 32 <> 33 {authLoaded ? ( 34 <NavigationContainer> 35 36 {isAuthenticated ? <BottomNavigator />:<AuthNavigator />} 37 38 </NavigationContainer> 39 ):( 40 <ActivityIndicator /> 41 )} 42 </> 43 ) 44} 45 46export default AppNavContainer;
ログアウト画面
Javascript
1const Logout = () => { 2 const {authDispatch} = useContext(GlobalContext); 3 4 useEffect(() => { 5 logoutUser()(authDispatch); 6 }, []); 7 8 return ( 9 10 <ActivityIndicator /> 11 12 ); 13}; 14 15export default Logout;
logoutUser.js
Javascript
1 2export default () => dispatch =>{ 3 AsyncStorage.removeItem('access_token'); 4 AsyncStorage.removeItem('refresh_token'); 5 AsyncStorage.removeItem('email'); 6 dispatch({ 7 type:'LOGOUT_USER', 8 }) 9 10}
dispatch type:'LOGOUT_USER'の箇所
case 'LOGOUT_USER': return { ...state, loading: false, data: null, isLoggedIn:false, }
教えていただければ幸いです。
回答1件
あなたの回答
tips
プレビュー