React Native (三)

创建抽屉导航

const DrawerNavigator = createDrawerNavigator({
  Page1: {
    screen: Page1,
    navigationOptions: {
      drawerLabel: "我的",
      drawerIcon: ({tintColor}) => (
        <MaterialIcons
          name={"drafts"}
          size={24}
          style={{color: tintColor}}
        />
      )
    }
  },
  Page2: {
    screen: Page2,
    navigationOptions: {
      drawerLabel: "账户",
      drawerIcon: ({tintColor}) => (
        <MaterialIcons
          name={"move-to-inbox"}
          size={24}
          style={{color: tintColor}}
        />
      )
    }
  }
}, {
  initialRouteName: "Page1",
  contentOptions: {activeTintColor: '#abcdef'},
  contentComponent: (props) => (
    <ScrollView style={{backgroundColor: '#789'}}>
      <SafeAreaView forceInset={{top: 'always', horizontal: 'never'}}>
        <DrawerItems {...props} />
      </SafeAreaView>
    </ScrollView>
  )
})

这里使用了另外一个图标包,按照之前的方法引入即可。使用方法也没有改变。
希望侧边栏是可以滑动的,所以将里面的内容放在了一个ScrollView里面。但是考虑到全面屏和一些其他屏幕的兼容性,把真正的内容放在ScrollView里面的SafeAreaView安全区域内,这样不会导致内容不可见或者被隐藏掉一部分。

创建SwitchNavigator

一次只显示一个页面。 默认情况下,它不处理返回操作,并在你切换时将路由重置为默认状态。
对于一个react-native APP来说,SwitchNavigator是必经之路。首先登录就需要它,用户没有成功登录,不可能让他就看到app里面的东西。
创建其实很简单:

export default createSwitchNavigator({
 AuthPage: AuthStack,
 AppPage: AppNavigator
}, {
 initialRouteName: "AuthPage"
})

顾名思义,AuthPage就是登录页,AppPage就是登录成功之后的APP页面。
我们将这个作为默认导出, 然后在index.js里面直接引用它

import {AppRegistry} from 'react-native'
import {createAppContainer} from "react-navigation";
import App from './navigator/navigator'
import {name as appName} from './app.json'

AppRegistry.registerComponent(appName, () => createAppContainer(App))

刷新页面:


import React, { Component } from 'react'
import {View, Text, StyleSheet, Button} from 'react-native'

export default class Login extends Component{
  render(){
    const {navigation} = this.props
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>Login!</Text>
        <Button title={"登录"} onPress={() => navigation.navigate("AppPage")} />
      </View>
    )
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  }
});

登录页面就是点击登录之后跳转路由为AppNavigator所在的路由AppPage.

全部评论

相关推荐

个人背景:学院二本计科专业&nbsp;大二开始实习个人经历:安克创新&nbsp;、理想汽车、字节跳动碎碎念:我做事只有三分钟热度。看到进了大厂的同学,我会羡慕,也会跟着努力上进;但遇到好看的小说,我又会放下手头的事沉迷其中,之前的坚持也就中断了。我有些自卑,总觉得自己学历和外貌都不够好。之前偶然在网上受到关注,我就喜欢上了上网,因为这里有很多人认可我。但我也很在意别人的评价,偶尔看到嘲讽的言论,会触发我的自卑情绪,让我感到愤怒。有时候我会强硬地回怼,有时候又会懦弱地选择无视。我也有虚荣心。不管是拿到安克、理想还是字节的机会,我在分享的时候都会带着这份心思。我会特意强调自己学历不好,是为了衬托出过程的艰难,以此显得自己更厉害。我知道,人往往会炫耀自己缺少的东西,来掩盖内心的空洞。我总想着走捷径,不太喜欢踏踏实实地做事。找实习的时候,我花了更多时间在研究面试技巧上,而不是提升专业能力。我会反复听面试录音分析技巧,看面试教程学习怎么和不同的面试官沟通,还会每天自言自语练习语言表达,同学都觉得我有点奇怪。我的实习生涯里,侥幸和运气占了很大一部分。我总在想,如果有一天我失去了这份幸运,这些特质可能会让我一蹶不振。ps:&nbsp;很多人会问我学习路线和经验&nbsp;但是就像我上面说的&nbsp;我的实习过程靠的很多是关键节点的运气&nbsp;技术上面我可能不如很多人&nbsp;&nbsp;所以请大家理性求助和理性参考我的回答&nbsp;附上我的投递记录
我的offer在哪里...:从去年看到现在,飞升哥就是榜样
我的求职进度条
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务