Реагировать на навигацию без навигационной поддержки, «отправка не определена» - PullRequest
0 голосов
/ 24 мая 2019

В моем приложении я настроил навигацию с помощью React-Navigation без навигационных реквизитов, как это: https://reactnavigation.org/docs/en/navigating-without-navigation-prop.html

Однако, когда я пытаюсь вызвать NavigationService.navigate('LoginScreen'); из componentDidMount(), я получаю «диспетчерская неопределенная».

Когда я вызываю ту же функцию из onTap внутри render(), я перемещаюсь, как и ожидалось.

Код:

class SplashScreen extends Component {

    componentDidMount() {
        NavigationService.navigate('LoginScreen'); // does not work
    }
    //works at "onPress"
    render() {
        return (
            <View style={styles.container}>
                <Text onPress={() => NavigationService.navigate('LoginScreen')}>SplashScreen</Text>
            </View>
        );
    }
}

Любые идеи о том, какрешить это?

1 Ответ

2 голосов
/ 25 мая 2019

Вы можете использовать withNavigation.Например:

import {withNavigation} from 'react-navigation'
class SplashScreen extends Component {

    componentDidMount = () => {
        this.props.navigation.navigate('LoginScreen'); // Change it
    }

    render() {
        return (
            <View style={styles.container}>
                <Text onPress={() => this.props.navigation.navigate('LoginScreen')}>SplashScreen</Text>
            </View>
        )
    }
}

export default withNavigation(SplashScreen) // export component like this

withNavigation - это HOC , предоставляемый библиотекой react-navigation, которая упаковывает ваш компонент для передачи требуемой navigation prop.

...