навигация реагировать не работает при доступе к другому стековому навигатору - PullRequest
0 голосов
/ 23 февраля 2019

У меня проблема с реагирующей навигацией.вот мои навигационные коды.

Navigation.js

const StartStack = createStackNavigator({
    First: EmptyScreen,
    Splash: SplashScreen 
},
{
    transitionConfig: () => fromBottom(),
});
const AppStack = createStackNavigator({
    Home: TabSet
},
{
   transitionConfig: () => fromRight(),
});
const AuthStack = createStackNavigator({ 
   SignIn: SignInScreen,
   SignUp: SignUpScreen,
   ForgotPassword: ForgotPasswordScreen
},
{
    transitionConfig: () => fromTop(),
});

export default createAppContainer(createSwitchNavigator({
   Start: StartStack,
   Auth: AuthStack,
   App: AppStack,
},
{
  initialRouteName: 'Start',
}));

Tabset.js

import React , { Component } from 'react';
import { View } from 'react-native';
import * as navOptions from '../../navigate/navigationOptions';
import BackgroundImage from '../../components/BackgroundImage';

class TabSet extends Component{

    static navigationOptions = { headerStyle: navOptions.headerStyle};

    render(){
        return(
            <View>
                <BackgroundImage>
                </BackgroundImage>
            </View>
        );
    }
}

export default TabSet;

NavigationOptions.js

export const headerStyle = {
    display:'none'
}

BackgroundImage.js

import React , { Component } from 'react';
import { View , ImageBackground , StyleSheet } from 'react-native';
import backgroundImage from '../../assets/images/backgroundImage.png';

class BackgroundImage extends Component{
    render(){
        return(
            <View>
                <ImageBackground 
                    source={backgroundImage} 
                    style = {styles.bgImg}
                    imageStyle = {{resizeMode : 'stretch'}}>
                        {this.props.children}
                 </ImageBackground>
            </View>
        )
     }
 }
 const styles = StyleSheet.create({
  bgImg : {
    width: '100%',
    height: '100%'
  }
 })
 export default BackgroundImage;

Я создаю три стека, таких как AppStack, StartStack и AuthStack.Они используются в createAppContainer () и надеются получить доступ к ним как

this.props.navigation.navigate ('App')

... У меня есть доступ к

this.props.navigation.navigate ('Start')

и

this.props.navigation.navigate ('Auth')

.Эти два стека работают хорошо.Затем я перенаправляю с экрана Вход AuthStack до AppStack , используя

this.props.navigation.navigate ('App'))

Я вижу первую страницу AppStack, экран Home отображается и неожиданно возвращается к экрану AuthStack SignIn .Затем я снова пытаюсь ориентироваться, снова происходит то же самое.Я использую избыточность и делаю встроенную навигацию.Потому что я думаю, что это излишняя проблема.Но проблема все еще существует.Все работает хорошо, но каждый раз, когда я перехожу на AppStack , он возвращается к AuthStack .Кто-нибудь может решить это, пожалуйста, помогите мне!

1 Ответ

0 голосов
/ 23 февраля 2019

Потратив несколько часов, я могу понять, в чем проблема!

setInterval(()=>{
  ***...some process***
  }else{
    clearInterval(this);
    this.props.navigation.navigate('Auth');
  }
},500);

этот код написан на заставке.Я думаю, что интервал очищен.но на самом деле это не понятно, и я пытаюсь перейти в AppStack, который возвращается через Auth через каждые 500 мс.Выше код старый, и я не могу этого вспомнить!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...