react-native创建tabbar

在使用react-native的过程中,一般都会做一些tabbar。

在这里我比较常用的是 : react-native-tab-navigator 这个第三方库

下面是效果图:

 我贴下核心代码

const dataSource = [

{icon:require('./image/icon_home_normal.png'),selectedIcon:require('./image/icon_home_selected.png'),tabPage:'Home',tabName:'首页',component:Home},

{icon:require('./image/icon_order_normal.png'),selectedIcon:require('./image/icon_order_selected.png'),tabPage:'Order',tabName:'订单',component:Order},

{icon:require('./image/icon_mine_normal.png'),selectedIcon:require('./image/icon_mine_selected.png'),tabPage:'Mine',tabName:'我的',component:Mine}

]

 

export default class App extends Component {

 

constructor(props){

super(props);

navigation = this.props.navigation;

this.state = {

selectedTab:'Home'

}

}

 

render() {

let tabbars = dataSource.map((item,i) => {

return (

<TabNavigator.Item

title={item.tabName}

selected={this.state.selectedTab===item.tabPage}

titleStyle={{color:'gray'}}

selectedTitleStyle={{color:'black'}}

renderIcon={()=><Image style={styles.tabIcon} source={item.icon}/>}

renderSelectedIcon = {() => <Image style={styles.tabIcon} source={item.selectedIcon}/>}

tabStyle={{alignSelf:'center'}}

onPress = {() => {this.setState({selectedTab:item.tabPage})}}

key={i}

>

<item.component navigation={navigation}/>

</TabNavigator.Item>

);

});

return (

<View style={styles.container}>

<TabNavigator

hidesTabTouch={true}

>

{tabbars}

</TabNavigator>

</View>

);

}

}

然后在定义三个页面的JS就可以了

 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要自定义react-navigation的TabBar,你需要先创建一个自定义组件来代替默认的TabBar。你可以使用react-native的View和Text组件来创建一个自定义TabBar,然后使用react-navigation的TabNavigatorConfig来将自定义TabBar应用到你的TabNavigator上。 以下是一个简单的示例代码: ```javascript import React from 'react'; import { View, Text, TouchableOpacity } from 'react-native'; import { createBottomTabNavigator } from 'react-navigation'; const CustomTabBar = ({ navigation }) => { const { routes, index } = navigation.state; return ( <View style={{ flexDirection: 'row', height: 56 }}> {routes.map((route, idx) => { const isFocused = index === idx; const tintColor = isFocused ? 'blue' : 'gray'; return ( <TouchableOpacity key={route.key} onPress={() => navigation.navigate(route.routeName)} style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}> <Text style={{ color: tintColor }}>{route.routeName}</Text> </TouchableOpacity> ); })} </View> ); }; const TabNavigator = createBottomTabNavigator( { Home: HomeScreen, Profile: ProfileScreen, }, { tabBarComponent: CustomTabBar, } ); ``` 在这个示例中,我们创建了一个名为CustomTabBar的自定义组件,并将其作为tabBarComponent选项传递给TabNavigator。CustomTabBar接收一个navigation对象作为参数,然后使用它来渲染包含所有选项卡的视图。我们使用TouchableOpacity组件为每个选项卡创建可点击的区域,并在被选中时改变选项卡标题的颜色。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值