美文网首页
#2 使用 'createBottomTabBar

#2 使用 'createBottomTabBar

作者: JamesSawyer | 来源:发表于2018-08-15 17:36 被阅读229次

在React Navigation V1中使用 TabNavigator 创建tab bar 导航,在最新的 V2.11.2 中,可以选择的方式比较多:

  • createTabNavigator 这个版本中已被弃用,尽量使用下面的方式

  • createBottomTabNavigator 路由被懒加载,屏幕组件�(Screen Component)在第一次聚焦之前不会载入

  • createMaterialBottomTabNavigator(需要安装 react-navigation-material-bottom-tabs,如果不使用Expo,则还需要安装 react-native-vector-icons 作为依赖,下一节再讲)

  • createMaterialTopNavigator

  • react-native-material-bottom-navigation 注意这个和上面react-navigation-material-bottom-tabs 的区别

基本用法

# 引入
import { createBottomTabNavigator } from 'react-navigation';

# 语法
createBottomTabNavigator(RouteConfigs, BottomTabNavigatorConfig);

示例

import React, { Component } from 'react';
import {
  Platform,
  StyleSheet,
  Text,
  View
} from 'react-native';
import { createBottomTabNavigator } from 'react-navigation';
import Icon from 'react-native-vector-icons/Ionicons';

class Home extends Component {
  render() {
    return (
      <View style={styles.container}>
        <Text>
          主页
        </Text>
      </View>
    );
  }
}
class Settings extends Component {
  render() {
    return (
      <View style={styles.container}>
        <Text>
          设置页面
        </Text>
      </View>
    );
  }
}

export default createBottomTabNavigator({
  Home: {
    screen: Home,
    navigationOptions: {
      tabBarLabel: '主页', // tab的标签名
      tabBarIcon: ({ focused, tintColor }) => (
        <Icon name='ios-home' color={tintColor} size={24} />
      ),
    }
  },
  Settings: {
    screen: Settings,
    navigationOptions: {
      tabBarLabel: '设置', // tab的标签名
      tabBarIcon: ({ tintColor }) => (
        <Icon name='ios-settings' color={tintColor} size={24} />
      ),
    }
  },
}, { // 路由配置
  initialRouteName: 'Settings', // 初始tab bar 页面
  order: ['Settings', 'Home'], // tab bar的显示顺序
  navigationOptions: {
    tabBarVisible: true, // 是否显示tab bar 默认是true
  },
  tabBarOptions: {
    // 用来style tab bar
    activeTintColor: 'orangered', // 激活时的样式
    inactiveTintColor: 'grey',
    swipeEnabled: true,
    tabStyle: {
      // backgroundColor: 'pink'
    },
    style: {
      backgroundColor: 'blue',
    },
  },
})

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
});

RouteConfigs里面navigationOptions属性说明

  • title: 可用于 headerTitletabBarLabel 的fallback 标题

  • tabBarIcon: React 元素 或者 给定 {focused: boolean, tintColor} 的函数返回的React.Node

  • tabBarLabel: 标签栏或者React元素中显示选项卡的标题字符串或者 给定 {focused: boolean, tintColor} 的函数返回的React.Node,用于显示在标签栏中。未定义时,使用场景title。 要隐藏,请参阅tabBarOptions.showLabel

  • tabBarButtonComponent: React组件,它包装图标和标签,并实现onPress.默认情况下是TouchableWithoutFeedback的一个封装,使其其表现与其它可点击组件相同.比如将其改为 tabBarButtonComponent: TouchableOpacity。则表示用 TouchableOpacity 代替默认的 TouchableWithoutFeedback对组件进行封装

  • tabBarOnPress: 处理点击事件的回调,在开始转换到下一个场景之前添加自定义逻辑(点击的场景)

    。改参数是一个对象

    • navigation: 页面中的navigation props
    • defaultHandler: tab press 的默认handler

更多配置:

相关文章

网友评论

      本文标题:#2 使用 'createBottomTabBar

      本文链接:https://www.haomeiwen.com/subject/dqgwbftx.html