import React,{Component} from ‘react‘ import { StyleSheet, View, Text, Button } from ‘react-native‘; // 主页 export default class CKHome extends Component{ static navigationOptions={ title:‘创客‘, headerStyle:{ backgroundColor:‘skyblue‘ }, headerTintColor:‘red‘, headerTitleStyle:{ fontSize:20, fontWeight:‘bold‘ }, headerLeft:()=>( <Button title="设置" onPress={()=>alert(‘设置‘)}/> ), headerRight:()=>( <Button title="扫一扫" onPress={()=>alert(‘扫一扫‘)}/> ) }; render(){ return ( <View style={{ flex:1, backgroundColor:‘cyan‘, justifyContent:‘center‘, alignItems:‘center‘ }}> <Text>首页</Text> <Button title="跳转" onPress={ ()=>this.props.navigation.navigate(‘HomeDetail‘) }/> </View> ) } }
import React,{Component} from ‘react‘ import {createAppContainer} from ‘react-navigation‘ import {createBottomTabNavigator,BottomTabBar} from ‘react-navigation-tabs‘ import { Image, StyleSheet } from ‘react-native‘; //import CKHome from ‘./../pages/CKHome‘; import HomeRootStack from ‘./../navigator/HomeStackNavigator‘ import CKFind from ‘./../pages/CKFind‘; import CKNearby from ‘./../pages/CKNearby‘; import CKMine from ‘./../pages/CKMine‘; //底部导航 const TABS={ CKHome:{ screen:HomeRootStack, navigationOptisons:{ tabBarLabel:‘首页‘, tabBarIcon:({focused})=>{ if(!focused){ return <Image source={require(‘./../accets/images/dw.png‘)} style={styles.bottmTabIconStyle}/> }else{ return <Image source={require(‘./../accets/images/dws.png‘)} style={styles.bottmTabIconStyle}/> } } } }, CKFind:{ screen:CKFind, navigationOptions:{ tabBarLabel:‘发现‘, tabBarIcon:({focused})=>{ if(!focused){ return <Image source={require(‘./../accets/images/wl.png‘)} style={styles.bottmTabIconStyle}/> }else{ return <Image source={require(‘./../accets/images/wls.png‘)} style={styles.bottmTabIconStyle}/> } } } }, CKNearby:{ screen:CKNearby, navigationOptions:{ tabBarLabel:‘附近‘, tabBarIcon:({focused})=>{ if(!focused){ return <Image source={require(‘./../accets/images/sport.png‘)} style={styles.bottmTabIconStyle}/> }else{ return <Image source={require(‘./../accets/images/sports.png‘)} style={styles.bottmTabIconStyle}/> } } } }, CKMine:{ screen:CKMine, navigationOptions:{ tabBarLabel:‘我的‘, tabBarIcon:({focused})=>{ if(!focused){ return <Image source={require(‘./../accets/images/mine.png‘)} style={styles.bottmTabIconStyle}/> }else{ return <Image source={require(‘./../accets/images/mines.png‘)} style={styles.bottmTabIconStyle}/> } } } } }; // class MainTabNavigator extends Component{ _tabNavigator(){ const {CKHome,CKFind,CKNearby,CKMine} =TABS; const tabs={CKHome,CKFind,CKNearby,CKMine}; if(!this.tabNavigator){ this.tabNavigator=createAppContainer(createBottomTabNavigator( tabs, { tabBarComponent:props=>( <BottomTabBar {...props} activeTintColor=‘rgb(62,187,175)‘/> ), } )) } return this.tabNavigator; } render(){ const TabNavigator=this._tabNavigator(); return <TabNavigator/> } } const styles=StyleSheet.create({ bottmTabIconStyle:{ width:30, height:30 } }); export default MainTabNavigator;
import {createStackNavigator} from ‘react-navigation-stack‘ import React from ‘react‘; import CKHome from ‘../pages/CKHome‘; import CKHomeDetail from ‘../pages/CKHomeDetail‘; //主页堆栈路由 const HomeRootStack=createStackNavigator({ Home:CKHome, HomeDetail:CKHomeDetail },{ initialRouteName:"Home", //初始加载Home navigationOptions:({navigation})=>({ tabBarVisible:navigation.state.index===0, }) }); export default HomeRootStack;
/** * Sample React Native App * https://github.com/facebook/react-native * * @format * @flow strict-local */ import React from ‘react‘; import { SafeAreaView, StyleSheet, ScrollView, View, Text, StatusBar, } from ‘react-native‘; import MainTabNavigator from ‘./navigator/MainTabNavigator‘; const App: () => React$Node = () => { return ( <MainTabNavigator/> ); }; const styles=StyleSheet.create({ }); export default App;
react native 之react-navigation 多页面导航
原文:https://www.cnblogs.com/ckfuture/p/14266969.html