zoukankan      html  css  js  c++  java
  • react-native——tab配置及跳转

    在 App 中 tab 是常见的页面类型,在 RN 里使用 react-navigation 可快速地进行 tab 配置。

    假设应用有4个页面,两个是tab页面,两个是详情页面。

    App.js

    //应用实际场景是有redux的,这里就不删除了。不使用rudex的话,直接 return <Router />就 ok 啦!
    import React, { Component } from 'react';
    import { Provider } from 'react-redux';
    import { PersistGate } from 'redux-persist/integration/react';
    import configureStore from './store';
    import Router from './router';
    
    let store = configureStore();
    
    export default class App extends Component {
      render() {
        return (
          <Provider store={store.store} style={{ flex: 1 }}>
            <PersistGate persistor={store.persistor}>
              <Router />
            </PersistGate>
          </Provider>
        );
      }
    };
    

    router.js

    import { createBottomTabNavigator, createAppContainer, createStackNavigator } from 'react-navigation';
    import React from 'react';
    import { Image } from 'react-native';
    
    import Index from './view/index';
    import Center from './view/center';
    import Detail1 from './view/detail1';
    import Detail2 from './view/detail2';
    
    const TabNavigator = createBottomTabNavigator({
        Index: {
            screen: Index,
            navigationOptions: {
                title: '首页'
            }
        },
        Center: {
            screen: Center,
            navigationOptions: {
                title: '我的'
            }
        },
    }, tabBarConfig);
    
    const AppNavigator = createStackNavigator({
        Tab: TabNavigator,
        Detail1: Detail1
        Detail2: Detail2
    }, { headerMode: 'none' });//删除每个页面的头(一般使用自定义的)
    
    export default createAppContainer(AppNavigator);
    
    const tabBarConfig = { //tab的一些配置
        defaultNavigationOptions: ({ navigation }) => ({
            tabBarIcon: ({ focused, horizontal, tintColor }) => {//处理tab icon
                const { routeName } = navigation.state;
                let iconUrl;
                switch (routeName) {
                    case 'Center':
                        iconUrl = focused ? require('./assets/imgs/me-full.png') : require('./assets/imgs/me.png');
                        break;
                    default:
                        iconUrl = focused ? require('./assets/imgs/mv-full.png') : require('./assets/imgs/mv.png');
                        break;
                }
                return <Image source={iconUrl} style={{  25, height: 25 }} />;
            },
        }),
        tabBarOptions: {
            activeTintColor: '#fd0',
            inactiveTintColor: '#666',
            labelStyle: {
                fontSize: 14
            },
            style: {
                backgroundColor: '#fafafa',
            }
        }
    }
    

    应用中,跳转非tab页面,建议使用push跳转,跳转tab建议使用navigate进行跳转。

    <Text onPress={() => this.props.navigation.navigate('Center')}>跳转Center</Text>
    <Text onPress={() => this.props.navigation.push('Detail1')}>跳转Detail</Text>
    
  • 相关阅读:
    LAB02:Selenium的安装与使用
    HW03:Exercise Section 2.3
    LAB01:安装 Junit(4.12), Hamcrest(1.3) 以及 Eclemma并完成一次三角形问题的测试
    HW02:根据程序回答问题
    HW01:程序中的错误
    Postman 接口测试
    Python3.7、Eclipse 4.5、 Java 8、 PyDev 5.2.0、 selenium-3.14.0环境搭建
    Java + selenium 实现web自动化简单示例
    java Junit自动化测试框架环境搭建
    java TestNg自动化测试框架环境搭建
  • 原文地址:https://www.cnblogs.com/hl1223/p/10892754.html
Copyright © 2011-2022 走看看