React Native-导航器和标签栏集成

Kaidao

我一直在尝试找到一种集成TabBarIOS和Navigator的解决方案,并且一直空无一人。基本上,我要解决的问题是拥有一个在启动时显示登录屏幕的屏幕(不带选项卡),然后导航至具有选项卡的主屏幕。

这是我的索引,登录屏幕,标签栏组件和导航器组件文件。

如果有人有任何建议,我将不胜感激!

谢谢

Index.ios.js:

'use strict'

import React, { Component } from 'react';
import { AppRegistry, StyleSheet, Text, TabBarIOS } from 'react-native';
import _ from 'lodash';
import Icon from 'react-native-vector-icons/FontAwesome';

import StatusBarBackground from './app/components/StatusBarBackground'
import AppNavigator from './app/navigation/AppNavigator';
import LoginIndexScreen from './app/screens/LoginIndexScreen'
import BottomBarIOS from './app/components/BottomBarIOS'

class mobile extends Component {

    render() {
        return (
            <AppNavigator />
        );
    }

}

const styles = StyleSheet.create({

  navigatorStyles: {

  }

});

AppRegistry.registerComponent('mobile', () => mobile);

BottomBarIOS.js

'use strict'

import React, { Component } from 'react';
import { StyleSheet, Text, TabBarIOS } from 'react-native';
import Icon from 'react-native-vector-icons/FontAwesome';

import AppNavigator from '../navigation/AppNavigator';

class BottomBarIOS extends Component {
    constructor(props) {
        super(props)
        this.state = {
            selectedTab: "HomeScreen"
        }
    }

    render() {
        return (
            <TabBarIOS selectedTab={this.state.selectedTab}>

                <TabBarIOS.Item
                    selected={this.state.selectedTab === "HomeScreen"}
                    title="Home"
                    onPress={() => this.setState({selectedTab: "HomeScreen"})}>
                        <AppNavigator
                        initialRoute={{ident: "HomeScreen"}} />
                </TabBarIOS.Item>

                <TabBarIOS.Item
                    selected={this.state.selectedTab === "CatalogueScreen"}
                    title="Catalogue"
                    onPress={() => this.setState({selectedTab: "CatalogueScreen"})}>
                        <AppNavigator
                        initialRoute={{ident: "CatalogueScreen"}} />
                </TabBarIOS.Item>

                <TabBarIOS.Item
                    selected={this.state.selectedTab === "MapScreen"}
                    title="Map"
                    onPress={() => this.setState({selectedTab: "MapScreen"})}>
                        <AppNavigator
                        initialRoute={{ident: "MapScreen"}} />
                </TabBarIOS.Item>

                <TabBarIOS.Item
                    selected={this.state.selectedTab === "UserProfileScreen"}
                    title="Profile"
                    onPress={() => this.setState({selectedTab: "UserProfileScreen"})}>
                        <AppNavigator
                        initialRoute={{ident: "UserProfileScreen"}} />
                </TabBarIOS.Item>
            </TabBarIOS>
        );
    }

}

const styles = StyleSheet.create({

  navigatorStyles: {

  }

});

module.exports = BottomBarIOS;

LoginIndexScreen.js

'use strict'

import React, { Component } from 'react';
import { AsyncStorage, StyleSheet, Text, View, TouchableOpacity, AlertIOS,} from 'react-native';

import ViewContainer from '../components/ViewContainer';
import StatusBarBackground from '../components/StatusBarBackground';
import AppNavigator from '../navigation/AppNavigator'

class LoginIndexScreen extends Component {
    constructor(props) {
        super(props)
        this.state = {
            selectedTab: "LoginIndexScreen"
        }
    }

    render() {
        return (
            <ViewContainer>
                <StatusBarBackground />
                <View style={styles.textContainer}>
                    <Text style={styles.loginText}>Welcome to Poqet</Text>
                    <TouchableOpacity onPress={(event) => this._navigateToHomeScreen()}>
                        <Text style={styles.nextStep}>Press to go to Home Screen</Text>
                    </TouchableOpacity>
                </View>
            </ViewContainer>
        );
    }

    _navigateToHomeScreen() {
        this.props.navigator.push({
            ident: "HomeScreen"
        });
    }
}

const styles = StyleSheet.create({

    textContainer: {
        flex: 1,
        alignItems: 'center',
        backgroundColor: '#F5FCFF',
    },

    loginText: {
        flexDirection: 'row',
        justifyContent: 'center',
        alignItems: 'center',
        marginTop: 30
    },

    nextStep: {
        marginTop: 80
    }

});

module.exports = LoginIndexScreen;

AppNavigator.js

'use strict'

import React, { Component } from 'react';
import { Navigator } from 'react-native';

import RegisterIndexScreen from '../screens/RegisterIndexScreen';
import LoginIndexScreen from '../screens/LoginIndexScreen';
import HomeScreen from '../screens/HomeScreen';
import UserProfileScreen from '../screens/UserProfileScreen';
import CatalogueScreen from '../screens/CatalogueScreen';
import MapScreen from '../screens/MapScreen';

class AppNavigator extends Component {

    _renderScene(route, navigator) {
        var globalNavigatorProps = { navigator }

        switch(route.ident) {
            case "RegisterIndexScreen":
                return (
                    <RegisterIndexScreen {...globalNavigatorProps} />
                )
            case "LoginIndexScreen":
                return (
                    <LoginIndexScreen {...globalNavigatorProps} />
                )
            case "HomeScreen":
                return (
                    <HomeScreen {...globalNavigatorProps} />
                )
            case "UserProfileScreen":
                return (
                    <UserProfileScreen {...globalNavigatorProps}
                    person={route.person} />
                )
            case "CatalogueScreen":
                return (
                    <CatalogueScreen {...globalNavigatorProps} />
                )
            case "MapScreen":
                return (
                    <MapScreen {...globalNavigatorProps} />
                )
            default:
                return (
                    <LoginIndexScreen {...globalNavigatorProps} />
                )
        }

    }

    render() {
        return (
            <Navigator
                initialRoute={{ident: "LoginIndexScreen"}}
                ref="appNavigator"
                renderScene={this._renderScene}
                configureScene={(route) => ({...route.sceneConfig || Navigator.SceneConfigs.FloatFromRight, })} />
        );
    }

}

module.exports = AppNavigator;

希瓦姆·辛哈(Shivam Sinha)

我建议使用以下路由库:https : //github.com/aksonov/react-native-router-flux

您想要实现的目标可以很容易地用更少的代码来完成。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

与React Native的持续集成

来自分类Dev

在React-Native中从Drawer在Android上引用导航器

来自分类Dev

React Native,导航

来自分类Dev

如何隐藏React Native导航器的后退按钮

来自分类Dev

使用React-Native和Redux在Actions中访问导航器

来自分类Dev

如何在React Native导航器中禁用向后滑动

来自分类Dev

React Native:导航器弹出窗口上的更新视图(ListView)

来自分类Dev

react-native-导航器和工具栏

来自分类Dev

在React Native中隐藏导航栏

来自分类Dev

使用选项卡栏和导航栏的React Native中的iOS 13黑暗模式

来自分类Dev

React Native中每种用户类型的差异抽屉导航器

来自分类Dev

如何在React Native中使用抽屉导航器?

来自分类Dev

React Navigation 5从堆栈导航器隐藏标签栏

来自分类Dev

在React Native中隐藏createBottomTabNavigator标签栏

来自分类Dev

React-Native-标签导航器嵌套在抽屉内

来自分类Dev

在react-native中更改顶部导航栏的颜色

来自分类Dev

React Native:标签和堆栈导航集成

来自分类Dev

在React Native v.5中离开某个屏幕时,如何隐藏底部的标签导航器?

来自分类Dev

如何在react-native中隐藏顶部导航栏?

来自分类Dev

嵌套在堆栈导航器中的React Native选项卡导航器

来自分类Dev

流星和React Native

来自分类Dev

Redux 中的 React-native 嵌套导航器

来自分类Dev

使用嵌套导航器与 react-navigation 和 redux 集成

来自分类Dev

使用 React Native 的未定义导航器

来自分类Dev

使用 react-native-router-flux 无法正确显示导航栏和选项卡

来自分类Dev

react native使用在不同页面中创建带有底部标签栏导航器的材料顶部标签导航器

来自分类Dev

Android 和 React Native 顶部导航栏

来自分类Dev

React Native 导航器的本地化

来自分类Dev

React Native Plaid 集成

Related 相关文章

  1. 1

    与React Native的持续集成

  2. 2

    在React-Native中从Drawer在Android上引用导航器

  3. 3

    React Native,导航

  4. 4

    如何隐藏React Native导航器的后退按钮

  5. 5

    使用React-Native和Redux在Actions中访问导航器

  6. 6

    如何在React Native导航器中禁用向后滑动

  7. 7

    React Native:导航器弹出窗口上的更新视图(ListView)

  8. 8

    react-native-导航器和工具栏

  9. 9

    在React Native中隐藏导航栏

  10. 10

    使用选项卡栏和导航栏的React Native中的iOS 13黑暗模式

  11. 11

    React Native中每种用户类型的差异抽屉导航器

  12. 12

    如何在React Native中使用抽屉导航器?

  13. 13

    React Navigation 5从堆栈导航器隐藏标签栏

  14. 14

    在React Native中隐藏createBottomTabNavigator标签栏

  15. 15

    React-Native-标签导航器嵌套在抽屉内

  16. 16

    在react-native中更改顶部导航栏的颜色

  17. 17

    React Native:标签和堆栈导航集成

  18. 18

    在React Native v.5中离开某个屏幕时,如何隐藏底部的标签导航器?

  19. 19

    如何在react-native中隐藏顶部导航栏?

  20. 20

    嵌套在堆栈导航器中的React Native选项卡导航器

  21. 21

    流星和React Native

  22. 22

    Redux 中的 React-native 嵌套导航器

  23. 23

    使用嵌套导航器与 react-navigation 和 redux 集成

  24. 24

    使用 React Native 的未定义导航器

  25. 25

    使用 react-native-router-flux 无法正确显示导航栏和选项卡

  26. 26

    react native使用在不同页面中创建带有底部标签栏导航器的材料顶部标签导航器

  27. 27

    Android 和 React Native 顶部导航栏

  28. 28

    React Native 导航器的本地化

  29. 29

    React Native Plaid 集成

热门标签

归档