我的代码库如下
Navigator.js 导出默认的createAppContainer(createSwitchNavigator( { // screendesign:screendesign, SplashScreen:SplashScreen, 应用:drNav, AuthStack:AuthStack }, { initialRouteName:'SplashScreen', } ));
import SplashScreen from './screens/SplashScreen'
<Provider store={store}>
<PersistGate loading={<SplashScreen/>} persistor={persistor}>
<View style={styles.container}>
<Navigator />
</View>
</PersistGate>
</Provider>
splashScreen.js
componentDidMount() {
if (this.state.isAuthenticated) {
this.props.navigation.navigate("App");
}
else {
this.props.navigation.navigate("AuthStack");
}
}
我遇到错误了
在实施redux之前,我已经将此页面用作输入屏幕 我的应用程序,显示为启动屏幕,并在后面检查用户是否 是否通过身份验证(如果已通过身份验证)重定向到登录页面 其他仪表板。一切正常,但是现在我使用了redux,然后 该方案正在类似地工作,仅差异该屏幕不可见 因为redux persis从存储加载数据
请帮助我是本机新手,无法理解此错误
谢谢
答案 0 :(得分:1)
导航道具可用于在导航器内部中定义的所有组件。 SplashScreen组件不是导航器的一部分,因此它无权访问导航道具。 但我认为您在那里不需要它。
您的SplashScreen组件是一个转储组件,只要PersistGate需要将存储的数据加载到redux存储中,它就会一直显示给用户。 因此,完成数据加载后,您将看到在PersistGate中定义的其余组件。因此,我不明白为什么您需要使用此加载组件中的导航。
如果确实需要从SplashScreen访问导航道具,则可以遵循以下指南:https://reactnavigation.org/docs/en/connecting-navigation-prop.html
答案 1 :(得分:0)
看起来您的代码无法在 SplashScreen组件中找到导航。
1)尝试在SplashScreen组件的render方法中进行控制。 2)还要检查redux的配置,因为您的组件无法访问导航道具,可能会导致redux的配置出现问题。