react-navigation,StackNavigator,TabNavigator 导航使用
import React, { Component } from \'react\';import {StyleSheet,Text,Button,View,TabBarItem} from \'react-native\';
import {StackNavigator,TabNavigator} from \'react-navigation\';
import Icon from \'react-native-vector-icons/Feather\';//图标库
import { IS_ANDROID, IS_IOS } from \'./config/base\';
//底部导航栏 ----- start ---------
const TabSty = new Object();
if(IS_IOS){
TabSty = {
activeTintColor:\'#6b52ae\', //活动选项卡的标签和图标颜色。
// activeBackgroundColor:\'#000\',//活动选项卡的背景颜色
inactiveTintColor:\'#333\',//非活动选项卡的标签和图标颜色。
// inactiveBackgroundColor:\'#fff\',//非活动选项卡的背景颜色
labelStyle:{//标签标签的样式对象
fontSize:12,
marginBottom:5
}
}
}else if(IS_ANDROID){
TabSty = {
activeTintColor:\'#6b52ae\', //活动选项卡的标签和图标颜色。
inactiveTintColor:\'#333\',//非活动选项卡的标签和图标颜色。
showIcon:true,//是否显示标签图标,默认为false。
pressOpacity:0.1,//按下标签的不透明度
pressColor:\'#ccc\',//材质纹波的颜色(仅限Android> = 5.0)--按下的水印
tabStyle:{//选项卡的样式对象。
paddingTop:5
},
labelStyle:{//标签标签的样式对象
fontSize:12,
margin:0
},
//选项卡指示符的样式对象(选项卡底部的行)。
indicatorStyle:{
height:0
}
}
}
//标签栏的样式对象。
TabSty.style = {
height:50,
backgroundColor:\'#fff\'
}
const Tab = TabNavigator(
{
Home:{
screen: require(\'./components/index/index.js\').default,//该底部导航栏该项对应的页面
navigationOptions: ({ navigation }) => ({
title:\'消息\',//页面标题
tabBarLabel: \'消息\',//导航栏该项标题
tabBarIcon: ({ tintColor, focused }) => ( //tintColor -- 这个是 状态切换的时候给图标不同的颜色
<Icon name="message-square" style={{color:tintColor,fontSize:16}}/>
)
}),
},
Nearby:{
screen: require(\'./components/index/index.js\').default,
navigationOptions: ({ navigation }) => ({
title:\'工作台\',
tabBarLabel: \'工作台\',
tabBarIcon: ({ tintColor, focused }) => (
<Icon name="home" style={{color:tintColor,fontSize:16}}/>
)
}),
},
Message:{
screen: require(\'./components/index/index.js\').default,
navigationOptions: ({ navigation }) => ({
title:\'我的\',
tabBarLabel: \'我的\',
tabBarIcon: ({ tintColor, focused }) => (
<Icon name="user" style={{color:tintColor,fontSize:16}}/>
)
}),
}
},
{
tabBarPosition: \'bottom\',
swipeEnabled: true,//标签之间进行滑动
animationEnabled: true,
lazy: true,// 是否懒加载
tabBarOptions:TabSty
}
);
//底部导航栏 ----- end ---------
//定义 StackNavigator 导航跳转 --- start ------
//工作台模块
import indexRout from \'./rout/indexRout.js\';
const androidTitleSty = new Object();
const Navigator = StackNavigator({
Tab: {screen:Tab},
...indexRout
},
{
//设置导航栏公用的样式navigationOptions:({ navigation }) => ({
//设置导航条的样式。背景色,宽高等
headerStyle:{
},
//设置导航栏文字样式
headerTitleStyle:{
flex:1,
textAlign:\'center\',
fontWeight:\'normal\',
fontSize:15,
color:\'#666\'
},
headerBackTitle:null,
//返回箭头重写
headerLeft:() => {
return <Icon name="chevron-left" onPress={()=>navigation.goBack()} style={styles.icon}/>;
}
})
},
);
//定义 StackNavigator 导航跳转 --- end ------
//样式
const styles = StyleSheet.create({
icon:{
fontSize:30,
color:\'#444\',
backgroundColor:\'transparent\'
}
});
export default Navigator;
indexRout.js:
这个js的内容其实完全可以放在 Navigator 这个里面的 Tab 下面只是我想把它分开,所以分开写了
//工作台路由export default rout = {
//固定投资
fixedInvestList:{
screen:require(\'../components/index/fixedInvest/list.js\').default,
navigationOptions:({ navigation }) => ({
title:\'列表页面\'
})
},
fixedInvestDetails:{
screen:require(\'../components/index/fixedInvest/details.js\').default,
navigationOptions:({ navigation }) => ({
title:\'详情页面\'
})
}
}
图标库的使用 可以看这里 react-native-vector-icons 图标库使用
以上是 react-navigation,StackNavigator,TabNavigator 导航使用 的全部内容, 来源链接: utcz.com/z/382765.html