Где вы определяете и экспортируете свои маршрутизаторы, определяете и экспортируете функцию, которая принимает логический параметр isLoggedIn и возвращает соответствующий маршрутизатор на основе значения isLoggedIn.
const AuthStack = createStackNavigator({
Welcome: {screen: WelcomeScreen,
navigationOptions: {
header:null
}},
Login: LoginScreen,
Signup: SignupScreen,
Forgot:ForgotScreen,
});
const AppStack =createStackNavigator(
{
Dashboard: DashboardScreen,
ScanScreen:ScanScreen,
});
// This is the function that does the work, it will render
// the either Auth or App router, based on if you're logged in.
export const createRootNavigator = (isLoggedIn = false) => {
if (isLoggedIn === false) {
return <AuthStack/>
} else {
return <AppStack/>
}
};
Тогдав компоненте вашего приложения (или где бы вы ни отображали свой маршрутизатор) нам нужно импортировать эту функцию и передать в нее, вошел ли пользователь в систему в данный момент.
'file-over.js' isприведенный выше код, т. е. код, который вы дали и в своем примере.
Грубый пример ниже.
// We import the file
import {createRootNavigator} from './file-above.js'
class App extends Component {
constructor (props) {
super(props);
this.state({
// Switching this will switch your stack router.
loggedIn: false
});
}
render () {
const {loggedIn} = this.state;
// Here we're rendering the router, passing in the
// loggedIn variable from state, this will dictate if the
// Auth or App router is rendered.
return createRootNavigator(loggedIn);
}
}
Конечно, здесь не хватает поля 'loggedIn' в компонентах приложения.переключение состояний, поиграйте с кодом выше, измените значение loggedIn через определение конструктора, затем подключитесь к форме (ам) входа в систему и т. д.