在没有导航道具的情况下进行导航,“调度未定义”

时间:2019-05-24 20:27:45

标签: react-native react-native-navigation

在我的应用中,我使用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 个答案:

答案 0 :(得分:2)

您可以使用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

withNavigationreact-navigation库提供的HOC,用于包装您的组件以传递所需的navigation道具。