推荐看看两篇官网文章:
状态栏相关设置
隐藏底部标签TabBar及导航的解析
正题,没写demo。复制粘贴就好
搭建demo使用相关版本:
"react-native": "0.56.0",
"react-navigation": "^2.18.2"

模块相关:
入口app.js:
/**
* Sample React Native App
* https://github.com/facebook/react-native
*
* @format
* @flow
*/
import React, {Component} from 'react';
import {Dimensions} from 'react-native';
import {
createDrawerNavigator,
createSwitchNavigator,
createBottomTabNavigator,
createStackNavigator
} from 'react-navigation';
import Login from './login';
import Regis from './regis';
import Home from './home';
import HomeDetail from './homeDetail';
import HomeDetailLittlemoudle from './homeDetailLittlemoudle';
import Record from './record';
import RecordDetail from './recordDetail';
import RecordDetailLittlemoudle from './recordDatailLittlemoudle';
import Setting from './setting';
import AboatAPP from './aboatAPP';
const start = 'isNotLogin';
var tabBarHeight = 50;
//隐藏tabar
const hiddleTabBar = (moudle)=>{
moudle.navigationOptions = ({ navigation }) => {
let tabBarVisible = true;
if (navigation.state.index > 0) {
tabBarVisible = false;
}
return {
tabBarVisible,
};
};
}
//主模块
const HomeMoudle = createStackNavigator(
{
H: {
screen: Home
},
HD: {
screen: HomeDetail,
},
HDL: {
screen: HomeDetailLittlemoudle
}
}, {
initialRouteName: 'H',
}
)
hiddleTabBar(HomeMoudle)
const RecordMoudle = createStackNavigator(
{
R: {
screen: Record
},
RD: {
screen: RecordDetail
},
RDL: {
screen: RecordDetailLittlemoudle
}
}, {
initialRouteName: 'R',
}
)
hiddleTabBar(RecordMoudle)
const MainMoudle = createBottomTabNavigator(
{
HomeMoudle: {
screen: HomeMoudle
},
RecordMoudle: {
screen: RecordMoudle
}
}, {
}
)
//设置 关于
const DrawModul = createDrawerNavigator(
{
MAIN: {
screen: MainMoudle
},
Set: {
screen: Setting
},
AboatAPP: {
screen: AboatAPP
}
}, {
initialRouteName: 'MAIN',
drawerWidth:Dimensions.get('window').width,
navigationOptions:{
drawerLockMode:'locked-open'
}
}
)
//登录 注册
const LoginRegisMoudle = createSwitchNavigator(
{
LOGIN: {
screen: Login
},
REGIS: {
screen: Regis
},
DRAW: {
screen: DrawModul
}
}, {
initialRouteName: start != "isLogin" ? 'DRAW' : 'LOGIN'
}
)
//入口
export default class app extends React.Component {
render() {
return (
<LoginRegisMoudle/>
)
}
}
login.js
import React, {Comoponent} from 'react';
import {
StyleSheet,
View,
Text,
Button,
StatusBar
} from 'react-native';
export default class nav2 extends React.Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.text}>this is login</Text>
<Button
style={styles.btn}
title={'登录'}
onPress={()=>{
this.props.navigation.navigate('DRAW');
}}
></Button>
<Button
style={styles.btn}
title={'注册账号'}
onPress={()=>{
this.props.navigation.navigate('REGIS');
}}
></Button>
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
text: {
color: 'red',
backgroundColor: 'pink',
fontSize: 25,
},
btn: {
backgroundColor: 'red',
color: 'blue',
width: 200,
height: 44,
marginTop: 15,
}
})
regis.js
import React, {Comoponent} from 'react';
import {
StyleSheet,
View,
Text,
Button,
StatusBar
} from 'react-native';
export default class nav2 extends React.Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.text}>this is regis</Text>
<Button
style={styles.btn}
title={'注册成功 返回登录'}
onPress={()=>{
this.props.navigation.navigate('LOGIN');
}}
></Button>
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
text: {
color: 'red',
backgroundColor: 'pink',
fontSize: 15,
},
btn: {
backgroundColor: 'red',
color: 'blue',
width: 200,
height: 44,
marginTop: 15,
}
})
setting.js
import React, {Comoponent} from 'react';
import {
StyleSheet,
View,
Text,
Button,
StatusBar
} from 'react-native';
export default class nav2 extends React.Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.text}>this is setting</Text>
<Button
style={styles.btn}
title={'返回'}
onPress={()=>{
this.props.navigation.goBack();
}}
></Button>
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
text: {
color: 'red',
backgroundColor: 'pink',
fontSize: 25,
},
btn: {
backgroundColor: 'red',
color: 'blue',
width: 200,
height: 44,
marginTop: 15,
}
})
aboatAPP.js
import React, {Comoponent} from 'react';
import {
StyleSheet,
View,
Text,
Button,
StatusBar
} from 'react-native';
export default class nav2 extends React.Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.text}>this is aboatAPP</Text>
<Button
style={styles.btn}
title={'返回'}
onPress={()=>{
this.props.navigation.navigate('MAIN');
}}
></Button>
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
text: {
color: 'red',
backgroundColor: 'pink',
fontSize: 25,
},
btn: {
backgroundColor: 'red',
color: 'blue',
width: 200,
height: 44,
marginTop: 15,
}
})
record.js
import React, {Comoponent} from 'react';
import {
StyleSheet,
View,
Text,
Button,
StatusBar
} from 'react-native';
export default class nav2 extends React.Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.text}>this is record</Text>
<Button
style={styles.btn}
title={'侧边栏'}
onPress={()=>{
this.props.navigation.openDrawer();
}}
></Button>
<Button
style={styles.btn}
title={'查看详情'}
onPress={()=>{
this.props.navigation.push('RD');
}}
></Button>
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
text: {
color: 'red',
backgroundColor: 'pink',
fontSize: 25,
},
btn: {
backgroundColor: 'red',
color: 'blue',
width: 200,
height: 44,
marginTop: 15,
}
})
recordDetail.js
import React, {Comoponent} from 'react';
import {
StyleSheet,
View,
Text,
Button,
StatusBar
} from 'react-native';
export default class nav2 extends React.Component {
static navigationOptions = {
tabBarVisible: true,
title:'标题',
}
render() {
return (
<View style={styles.container}>
<Text style={styles.text}>this is recordDetail</Text>
<Button
style={styles.btn}
title={'查看小模块'}
onPress={()=>{
this.props.navigation.push('RDL');
}}
></Button>
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
text: {
color: 'red',
backgroundColor: 'pink',
fontSize: 25,
},
btn: {
backgroundColor: 'red',
color: 'blue',
width: 200,
height: 44,
marginTop: 15,
}
})
recordDetailLittlemoudle.js
import React, {Comoponent} from 'react';
import {
StyleSheet,
View,
Text,
StatusBar
} from 'react-native';
export default class nav2 extends React.Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.text}>this is recordDetailLittlemoudle</Text>
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
text: {
color: 'red',
backgroundColor: 'pink',
fontSize: 25,
},
btn: {
backgroundColor: 'red',
color: 'blue',
width: 200,
height: 44,
marginTop: 15,
}
})
home.js
import React, {Comoponent} from 'react';
import {
StyleSheet,
View,
Text,
Button,
StatusBar
} from 'react-native';
export default class nav2 extends React.Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.text}>this is home</Text>
<Button
style={styles.btn}
title={'侧边栏'}
onPress={()=>{
this.props.navigation.openDrawer();
}}
></Button>
<Button
style={styles.btn}
title={'查看详情'}
onPress={()=>{
this.props.navigation.push('HD');
}}
></Button>
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
text: {
color: 'red',
backgroundColor: 'pink',
fontSize: 25,
},
btn: {
backgroundColor: 'red',
color: 'blue',
width: 200,
height: 44,
marginTop: 15,
}
})
homeDetail.js
import React, {Comoponent} from 'react';
import {
StyleSheet,
View,
Text,
Button,
StatusBar
} from 'react-native';
export default class nav2 extends React.Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.text}>this is homeDetail</Text>
<Button
style={styles.btn}
title={'查看小模块'}
onPress={()=>{
this.props.navigation.push('HDL');
}}
></Button>
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
text: {
color: 'red',
backgroundColor: 'pink',
fontSize: 25,
},
btn: {
backgroundColor: 'red',
color: 'blue',
width: 200,
height: 44,
marginTop: 15,
}
})
homeDetailLittlemoudle.js
import React, {Comoponent} from 'react';
import {
StyleSheet,
View,
Text,
StatusBar
} from 'react-native';
export default class nav2 extends React.Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.text}>this is homeDetailLittlemoudle</Text>
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
text: {
color: 'red',
backgroundColor: 'pink',
fontSize: 25,
},
btn: {
backgroundColor: 'red',
color: 'blue',
width: 200,
height: 44,
marginTop: 15,
}
})
网友评论