Reactjs React Navigation 5条件渲染与redux不工作

Reactjs React Navigation 5条件渲染与redux不工作,reactjs,react-native,react-redux,react-navigation,Reactjs,React Native,React Redux,React Navigation,大家好,我正在尝试理解新的react navigation 5,我正在与redux合作,但我会举一个小例子让你们理解我的问题,所以 我创造了一个 Stack.js文件将我的所有堆栈放在哪里目前我只使用了2个,如LoginStack和TabNavStack(重定向到主屏幕),现在对于示例,我只制作了一个堆栈导航器并传递组件函数,下面是代码: Stack.js const Stack = createStackNavigator(); const Tab = createBottomTabNavig

大家好,我正在尝试理解新的react navigation 5,我正在与redux合作,但我会举一个小例子让你们理解我的问题,所以

我创造了一个

Stack.js文件将我的所有堆栈放在哪里目前我只使用了2个,如LoginStack和TabNavStack(重定向到主屏幕),现在对于示例,我只制作了一个堆栈导航器并传递组件函数,下面是代码:

Stack.js

const Stack = createStackNavigator();
const Tab = createBottomTabNavigator();

export function TestStackNav() {
    const isAuth = useSelector(state => state.loginReducer); // i will explain why i need this thing here :)

    return <Stack.Navigator>
                <Stack.Screen
                        name="LoginScreen"
                        component={LoginContainer}/>
                <Stack.Screen 
                    name="TabNav"
                    component={TabNav}/>
            </Stack.Navigator>
}

 export function TabNav() {
    return (
        <Tab.Navigator>
            <Tab.Screen name="AnimeScreen" component={AnimeContainer} />
            <Tab.Screen name="HomeScreen" component={HomeScreen} />
            <Tab.Screen name="SettingsScreen" component={SettingsScreen} />
        </Tab.Navigator>

    );
}
const Stack=createStackNavigator();
const Tab=createBottomTabNavigator();
导出函数TestStackNav(){
const isAuth=useSelector(state=>state.loginReducer);//我将解释为什么我需要这个东西:)
返回
}
导出函数TabNav(){
返回(
);
}
现在,在我的loginContainer中,我让redux工作,只发送道具和其他东西,但容器连接到LoginCreen,这很好,因为在应用程序开始时,我们看到登录屏幕,现在在登录屏幕中,我有我的大而旧的登录按钮,其中检查数据发送操作和其他东西,并在最后只需导航到这个.props.navigation.navigate(“TabNav”,{screen:'HomeScreen'}),这很好,因为他在主屏幕上重定向了我……但问题是,如果我在Stack.js中的reduxStore中使用条件渲染,就像这样

export function TestStackNav() {
    const isAuth = useSelector(state => state.loginReducer);
    return <Stack.Navigator>
        {isAuth.logged ?
            <Stack.Screen
                name="TabNav"
                component={TabNav} />
            :
            <Stack.Screen
                name="LoginScreen"
                component={LoginContainer}
            />}
    </Stack.Navigator>
}
导出函数TestStackNav(){
const isAuth=useSelector(state=>state.loginReducer);
返回
{isAuth.log?
:
}
}
现在使用相同的逻辑,只是从我得到的reduxStore中放置一个条件渲染


我确实改变了任何东西loginScreen是相同的所有其他屏幕都是相同的,但只是添加了一个条件渲染到堆栈导航器我得到了这个错误…有人能帮我吗…我试图使代码简单…我已经看到了react导航文档中使用的上下文,但目前我不想使用它,因为我我们必须更深入地研究它。感谢您的帮助:)

您是否定义了堆栈导航器和选项卡导航器?i、 e

const Stack = createStackNavigator(); ?

当您有条件地定义屏幕/导航器时,React Navigation将在您更改条件后自动呈现正确的屏幕。在这种情况下,您不需要进行
导航

从验证流文档:

需要注意的是,在使用这种设置时,不需要通过调用
navigation.navigate('Home')
手动导航到
Home
屏幕。当
isSignedIn
变为
true
时,React Navigation将自动导航到
Home
屏幕


因此,您需要删除
导航。在成功登录后导航
,因为它将在您在redux中更新状态后自动发生。

这是本文作者的问题。你可以用评论来提问,而不是把它作为答案发布。