在我的应用中,我使用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>
);
}
}
关于如何解决此问题的任何想法?
答案 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
withNavigation是react-navigation
库提供的HOC,用于包装您的组件以传递所需的navigation
道具。