Перейти к экрану внешнего стека из внутреннего экрана навигации ящика, отреагировать на нативный
В моем приложении он имеет внешний стековый навигатор, который имеет экран-заставку, экран регистрации входа, экран входа в систему, экран регистрации, экран забытого пароля и окно приложения в виде ящика, а внутри меню ящика есть два экрана - два отдельных стека навигатора для дома. экран и экран настроек, я не могу перейти к экрану входа в систему или любому экрану внешнего стека изнутри дома или экранов настроек (например, после выхода из системы невозможно перейти к экрану входа в систему).
мой код файла внешнего стека:
import React, { Component } from 'react';
import { createStackNavigator, } from "react-navigation";
import { Login } from './Login';
import { Signup } from './Signup';
import { ForgetPassword } from './ForgetPassword';
import { LoginReg } from './LoginReg';
import { Splash } from './Splash';
import { AppDrawer } from "./AppDrawer";
class AppOuterStack extends Component {
render() {
return(
<AppOuterStackMenu />
);
}
}
const AppOuterStackMenu = new createStackNavigator({
Splash: {
screen: Splash,
navigationOptions: {
header: null
}
},
LoginReg: {
screen: LoginReg,
navigationOptions: {
header: null
}
},
Login: {
screen: Login,
navigationOptions: {
title: "Login"
}
},
Signup: {
screen: Signup,
navigationOptions: {
title: "Register"
}
},
ForgetPassword: {
screen: ForgetPassword,
},
AppDrawer: {
screen: AppDrawer,
navigationOptions: {
header: null
}
},
});
export { AppOuterStack };
Код файла меню моего ящика:
import React, { Component } from 'react';
import { createDrawerNavigator } from "react-navigation";
import { SettingScreen, MainScreen } from './AppInnerScreens';
class AppDrawer extends Component {
render() {
return(
<AppDrawerMenu />
);
}
}
const AppDrawerMenu = new createDrawerNavigator({
MainScreen: {
screen: MainScreen,
},
SettingScreen: {
screen: SettingScreen,
},
});
export { AppDrawer };
мой код навигатора внутреннего стека:
import React from 'react';
import { View , } from 'react-native';
import { createStackNavigator } from "react-navigation";
import { Text, Button, Icon } from 'native-base';
import { Main } from './Main';
import { Setting } from './Setting';
const SettingScreen = new createStackNavigator({
Setting: {
screen: Setting,
navigationOptions : ({navigation}) =>{
return {
headerLeft: (
<View style={{ padding: 10 }} >
<Button transparent onPress={() => navigation.openDrawer()} >
<Icon style={{fontSize: 34,}} name="menu" />
</Button>
</View>
)
}
}
},
});
const MainScreen = new createStackNavigator({
Main: {
screen: Main,
navigationOptions : ({navigation}) =>{
return {
headerLeft: (
<View style={{ padding: 10 }} >
<Button transparent onPress={() => navigation.openDrawer()} >
<Icon style={{fontSize: 34,}} name="menu" />
</Button>
</View>
)
}
}
}
});
export { SettingScreen, MainScreen };
мой код выхода из системы:
import React, { Component } from 'react';
import { View ,StyleSheet, AsyncStorage } from 'react-native';
import {
Container, Content, Button, Text,
} from 'native-base';
import firebase from 'react-native-firebase';
import a,{ NavigationActions, StackActions } from 'react-navigation';
class Setting extends Component {
signOut = ()=>{
if(firebase.auth().user){
firebase.auth().signOut().then(function() {
console.log('Signed Out');
}, function(error) {
console.error('Sign Out Error', error);
});
}
this.removeUser();
// this.props.navigation.navigate("LoginReg");
// console.log("to logreg", NavigationActions.NavigationActions);
// AsyncStorage.removeItem("user").catch((error)=>{
// console.log("signOut err", error)
// });
}
removeUser = ()=>{
try {
const value = AsyncStorage.removeItem('user');
} catch (error) {
console.log("signOut err", error)
// Error retrieving data
}
}
render() {
return(
<Container>
<Content>
<Button block
onPress={()=> {
this.signOut();
}}
>
<Text>
Sign Out
</Text>
</Button>
<Button block
onPress={()=> {
console.log("to logreg", this.props.navigation);
this.props.navigation.dispatch(actionToDispatch);
}}
>
<Text>
test
</Text>
</Button>
</Content>
</Container>
);
}
}
export { Setting };
const actionToDispatch = StackActions.reset({
index: 0,
key: null,
actions: [
NavigationActions.navigate({ routeName: "Login" }),
],
});
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
}
})
Ссылка на мой проект GitHub - https://github.com/ratnesh2581990/ShopApp2