当前位置: 首页 > 知识库问答 >
问题:

React本机导航在登录后导航到主页时调用所有屏幕ComponentDidMount/ComponentWillMount

卜鹏
2023-03-14

说明:我登录并导航到Home,我发现它调用了两个屏幕componentDidMount和componentWillMount,即Home和Error-Management。我是不是做错了什么,我想这是一个错误,因为标签。但无法解决。请帮我解决这个问题。

从'React'导入React,{Component};从“react-navigation”导入createStackNavigator,createDrawerNavigator,createMaterialTopTabNavigator};从“react-navigation"导入{DrawerActions};从'react-native'导入View.Text.StyleSheet.Platform.TouchableOpacity.Image.StatusBar};

    import Login from '../Login';
    import Home from '../Profile';
    import ErrorManagement from '../screen/error-management/ErrorManagement'
    import DrawerScreen from '../DrawerScreen';


    const Tabs = createMaterialTopTabNavigator({
        Home: Home,
        'Error Management':ErrorManagement
    },{
        tabBarOptions: {
            scrollEnabled: true,
            lazyLoad: true,
            activeTintColor: '#000',
            inactiveTintColor: 'gray',
            style: {
                backgroundColor: '#fff',
            },
            tabStyle: {
                 width: 210
            },
            indicatorStyle: {
                backgroundColor: '#000',
            },
        }
    });

    const DrawerNavigator = createDrawerNavigator({
        Home:{
            screen: Tabs
        }
    },{
        initialRouteName: 'Home',
        contentComponent: DrawerScreen,
        drawerWidth: 300
    });

    const MenuImage = ({navigation}) => {
        if(!navigation.state.isDrawerOpen){
            return <Image source={require('../images/menu-button.png')}/>
        }else{
            return <Image source={require('../images/left-arrow.png')}/>
        }
    }


    const Routes = createStackNavigator ({
        Login : {
            screen : Login,
            navigationOptions: ({ navigation }) => ({
                header: null
            }),
        },
        Home : {screen : DrawerNavigator,
                navigationOptions: ({ navigation }) => ({
                    title: 'Middle-Office',  // Title to appear in status bar
                    headerLeft: 
                    <TouchableOpacity  onPress={() => {navigation.dispatch(DrawerActions.toggleDrawer())} }>
                        <MenuImage style="styles.bar" navigation={navigation}/>
                    </TouchableOpacity>,
                    headerStyle: {
                        backgroundColor: '#87ceeb',
                    },
                    headerTintColor: '#fff',
                    headerTitleStyle: {
                      fontWeight: 'bold',
                    },

                }),
            },
        },
        {
            initialRouteName: 'Login'
        }
    );



    export default Routes;

共有2个答案

陈文景
2023-03-14

选项也可用于

因此,只需在 添加 属性。

它会起作用:)

桂和同
2023-03-14

接受 选项 ,仅当用户在该选项卡上时,该选项卡可用于挂载和呈现选项卡。但 没有这样的选项。

但是您可以使用 中的 查看屏幕是否有焦点,然后执行所需的任务。

https://reactnavigation.org/docs/en/with-navigation-focus.html

但它仍然可以一次挂载您的所有屏幕。

我在以下链接上创建了一个HOC:

https://snack.expo.io/hkjvzm5-m

您可以看到它使用 ,并且只有当屏幕聚焦时才挂载屏幕。但有一个小问题,它是重新安装屏幕,每次屏幕得到聚焦。

但是您可以了解如何只需花很少的精力就可以完成它,以适合您的用例。

 类似资料:
  • 问题内容: 我用于在屏幕之间导航。我在第二个活动中调用两个API的in 函数。第一次加载时,加载成功。然后,我按返回按钮返回到第一个活动。然后,如果我再次进行第二次活动,则不会调用API,并且会出现渲染错误。我无法为此找到任何解决方案。任何建议,将不胜感激。 问题答案: 如果有人在2019年到这里来,请尝试以下操作: 将组件添加到渲染中: 现在,每次页面聚焦时都会触发onDidFocus事件,尽管

  • 我遵循Android安装React导航的所有说明。 首先,“npm安装--Save React-Navigation”,“npm安装--Save React-Native-Gesture-Handler”。“react-native link react-native-gesture-handler”,最后,更新了我的 这是我得到的错误: 错误所在:在创建目录'd:\react Native pr

  • 应用程序要求如下所示: 1) 拥有一个带有简单用户名和密码的登录表单 2)一旦用户提交了登录表单,用户应该导航到主组件 问题: 在发送正确的用户名和密码后,服务器会进行身份验证并发送正确的令牌,但现在我设法在URL中显示正确的路由,但组件没有加载, 这是我的档案 登录信息 行动 index.js store.js 依赖列表 有人能帮我解释一下为什么这条路线不行吗,

  • 在我的反应原生应用程序中,我有一个切换导航器来在认证堆栈和应用堆栈之间导航: 它可以工作,但是当我从AuthStack转到AppStack时,它会闪烁,屏幕会向上移动。我如何防止这种行为增加平稳过渡。

  • 我创建了3个组件。1)登录屏幕2)VenueList屏幕3)菜单屏幕我已经创建了另一个组件,称为授权加载这个组件将用户从登录屏幕导航到VenueList屏幕。AuthLoding是连接登录前和登录后组件的桥接组件。 登录屏幕上有一个按钮,点击它将触发登录ction.js用户被导航到网络浏览器,在那里他输入电子邮件/密码。收到访问令牌后,用户必须导航到VenueList屏幕,但切换导航器不工作。我该

  • 问题内容: 如何从一个活动屏幕导航到另一个活动屏幕?在第一个屏幕中,我有一个按钮,如果我单击该按钮,则必须移至另一个“活动”屏幕。 问题答案:

  • 我需要一些关于react原生应用程序的社区建议。我是一个全新的人,不理解其中的一些基本区别。 关于反应本地文档创建StackNavigator的示例建议如下:从“反应导航堆栈”导入{createStackNav导航仪}; 我发现很多人使用下面的样式导入{堆栈导航器,Tab导航器}从“反应导航”; 为什么人们使用以上两种不同的风格?哪一个更合适,为什么? react-navigation-stack

  • 问题内容: 我正在使用Bootstrap v3。 我已经设置了导航栏类,因此当我将屏幕移动大小时,导航会折叠,并且会出现类似网格的小切换按钮-因此,它可以按预期工作。 我想要的是将其作为所有屏幕尺寸的默认操作。也就是说,即使在台式机上,我也希望折叠导航并使切换按钮可见。 我已经通过CSS进行了查看,并且提供了很多功能,尽管我不知道要更改哪些部分。 我尝试注释掉较大的媒体查询,尽管其中有很多,而且似