react-navigation 实现简单登录 跳转路由

摘要:
对于不需要传统tab切换的app项目实现简单登录跳转效果图如下在登录的时候应用的是createSwitchNavigator这个api可以屏蔽调android的返回键import{createSwitchNavigator,createStackNavigator}from'react-navigation';//引入路由页面importLoginfrom"./page/login/login.j

对于不需要传统tab切换的app项目 实现简单登录 跳转 效果图如下

react-navigation 实现简单登录 跳转路由第1张

react-navigation 实现简单登录 跳转路由第2张

在登录的时候 应用的是createSwitchNavigator 这个api可以屏蔽调android 的返回键

import { createSwitchNavigator, createStackNavigator } from 'react-navigation';

//引入路由页面
import Login from "./page/login/login.js";
import  Home  from './page/agvAuto/home.js';
import  AgvAuto  from './page/agvAuto/agvAuto.js';
import  AgvManual  from './page/agvAuto/agvManual.js';
import  AgvGangControl  from './page/agvAuto/agvGangControl.js';
import  AgvCodeReader  from './page/agvAuto/agvCodeReader.js';
import  AgvParameterSet  from './page/agvAuto/agvParameterSet.js';


//加载路由配置
const AppStack =createStackNavigator(
    { 
        Home: {screen : Home}, 
        AgvAuto: {screen : AgvAuto}, 
        AgvManual:{screen : AgvManual},
        AgvGangControl:{screen : AgvGangControl},
        AgvCodeReader:{screen : AgvCodeReader},
        AgvParameterSet:{screen : AgvParameterSet}
    },
    {
        mode: 'modal',
        headerMode: 'none',
    }
);

//身份验证流程rooter
const Rooter =createSwitchNavigator(
    {
      AuthLoading: Login,
      App: AppStack,
    },
    {
      initialRouteName: 'AuthLoading',
    }
);

export default Rooter;

这里我提取出了一个路由文件, createStackNavigator 是传统的路由文件配置 headerMode none是为了标题去掉

import React, { Component } from 'react';
import {
  Platform,
  StyleSheet,
  Text,
  View,
  Image,
  FlatList
} from 'react-native';
import LogoTitle from '../../common/logoTitle.js';
import NavListItem from '../../component/navItem.js';

class NavList extends React.PureComponent {
  
    _keyExtractor = (item, index) =>item.id;
  
    _onPressItem = (id: string) =>{
        const { navigate } = this.props.navigation;
        //updater functions are preferred for transactional updates
console.log(id)
        navigate(id);
    };
  
    _renderItem = ({item}) =>(
        <NavListItem
            id={item.id}
            onPressItem={this._onPressItem}
            title={item.title}
        />
);
  
    render() {
        return(
            <FlatList
                data={this.props.data}
                renderItem={this._renderItem}
                horizontal={true}
            />
);
    }
}

export default class Home extends Component<{}>{
    constructor(props){
        super(props);
        this.state ={
            data : [
                {
                    id : 'AgvAuto',
                    title : '自动控制'},
                {
                    id : 'AgvGangControl',
                    title : '联动控制'},
                {
                    id : 'AgvManual',
                    title : '手动控制'},
                {
                    id : 'AgvCodeReader',
                    title : '读码器'},
                {
                    id : 'AgvParameterSet',
                    title : '参数设定'},
            ]
        };
    }

    render() {
        const { navigate } = this.props.navigation;
        return(
            <View style={styles.container}>
                <LogoTitle logout={
                    ()=>{
                        //退出登录到login
                        navigate('AuthLoading');
                    }    
                }
                
                goBack={
                    ()=>{
                        //退出登录到login
                        this.props.navigation.goBack();
                    }    
                }
                />
                <View style={styles.container}>
                    <View style={styles.nav}>
                        <NavList 
                            navigation={this.props.navigation}
                            data={this.state.data}
                        />
                    </View>
                </View>
            </View>
);
    }
}

const styles =StyleSheet.create({
    container: {
        flex: 1,
        backgroundColor: '#fff',
    },
    nav:{
        height: 210,
        alignItems: 'center',
    },
    container: {
        flex : 1,
        justifyContent : 'center'}
});

这个利用FlatList 来渲染列表

代码 https://pan.baidu.com/s/1FfEEJKrPGBMX95ipnUpqBw

免责声明:文章转载自《react-navigation 实现简单登录 跳转路由》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇看中国房地产25条真实谎言IIS FTP 上传文件550错误下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

weblogic 的应用链接不上数据库报异常 Caused By: weblogic.common.ResourceException: Io exception: Connection reset 错误信息表示访问数据库异常,创建链接池失败

weblogic对此值注释:尝试建立数据库连接的间隔秒数。如果已设置此值且在创建数据源时数据库不可用,则在您指定的秒数之后,WebLogicServer将重新尝试在池中创建连接,并会不断尝试创建连接,直到创建成功。如果设置为0,则将禁用连接重试。...

JQuery 导入导出 Excel

正在做一个小项目,从数据库中查询数据放在HTMLTable中.现在想要从这个table中导出数据来.另外用户需要选择导出的列.使用jQuery的导出插件可以完成这个需求.jQueryPlugintoExportHTMLTables例子:导入插件:[javascript]viewplaincopy˂/scr...

LaTex学习笔记(1)——LaTeX文档插入图片的几种常用方法

2,插入bmp图片还没有找到直接插入bmp图片的方法。用gimp或fastoneimageviewer,将jpg质量选为最高,转换之后得到的图片质量较好。3,同时插入jpg和eps图片插入的命令不变。编译时使用Latex,dvi2pdf,两种格式的图片都可以显示。...

docker run hangs问题排查记录

1.故障描述过去两天遇到了一个非常奇怪的问题。现在完整的故障描述如下:1)首先,我的同事告诉我,K8S集群中的一个工作节点将其状态更改为NoReady,并且在节点kubelet_truntime的错误日志中发现了大量此类日志E060301:50:51.45511776268remote。go:332]ExecSync1f0e3ac13faf224129bc4...

Linux 安装.src.rpm源码包的方法

接下来是rpm安装过程。...

Linux cat查看文件,查找关键字(grep),统计(wc -l)

######cat搜索关键字的语法:cat file | grep keyword | wc lcat/proc/meminfo | grepSwap | wc-l#######Linux系统中wc命令的功能是统计指定文件中的字节、单词和行数,并显示和输出统计结果。如果没有给出文件名,则从标准输入中读取。wc还提供指定文件的总统计数。此标志不能与-c标志一起...