Es ist schon einige Tage her, an denen ich an einem Punkt feststecke, an dem ich als Anfänger nicht sicher bin, wie ich es angehen soll. In meinem routes/main.js
habe ich diesen Stapel Navigation:Zum Startbildschirm navigieren, wenn Token reactive-native o.w. Login-Bildschirm
export const createRootNavigator = (loggedIn = false) => {
return StackNavigator(
{
LoggedIn: {
screen: LoggedIn
},
LoggedOut: {
screen: LoggedOut
}
},
{
headerMode: loggedIn ? '' : 'none',
mode: Platform.OS === 'ios' ? 'modal' : 'card',
initialRouteName: loggedIn ? "LoggedIn" : "LoggedOut"
}
);
}
App.js
import RootNavigation from './root';
const App =() => ({
render() {
return (
<Provider store = {store} >
<View style={styles.container}>
<RootNavigation/>
</View>
</Provider>
);
}
})
root.js
import React, {Component} from 'react';
import { AsyncStorage} from 'react-native';
import { createRootNavigator} from './src/routes/main';
let RootNavigation = createRootNavigator(true);
export default class Root extends Component {
render() {
return (
< RootNavigation/>
);
}
}
In root.jslet RootNavigation = createRootNavigator(true);
derzeit true
wird geleitet wird, jedoch kann es true or false
sein, was ich AsyncStorage.getItem('authToken');
ich erreichen lassen soll mit
So etwas wie dies in meinem root.js
Hinweis: Below-Code ist falsch, aber es wird erklärt, was Ich will.
import React, {Component} from 'react';
import {AsyncStorage} from 'react-native';
import { createRootNavigator} from './src/routes/main';
// Not sure about the code placement of this part.
let RootNavigation;
let token = await AsyncStorage.getItem('authToken');
if(token) {
RootNavigation = createRootNavigator(true);
}else {
RootNavigation = createRootNavigator(false);
}
export default class Root extends Component {
render() {
return (
< RootNavigation/>
);
}
}
Wie kann diese Funktionalität erreicht werden? Ich verwende react-redux
und react-thunk
in meinem Projekt. Bitte helfen Sie !!
Hört sich gut an, wenn ich einen Splash Screen habe, was hier nicht der Fall ist. –
Der von mir beschriebene Ansatz erfordert keinen Begrüßungsbildschirm. Ihr erster Bildschirm könnte jeder Bildschirm sein, der die Authentifizierung überprüft und darauf reagiert. Unter Verwendung Ihres ursprünglichen Ansatzes könnten Sie dieses Beispiel hilfreich finden. https://medium.com/the-react-native-log/building-an-authentication-flow-with-react-navigation-fb5de2203b5c – Corey