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


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

    在登录的时候 应用的是 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

  • 相关阅读:
    pagefile.sys
    Oracle数据库同义词
    oracle临时表
    修改Oracle并行度
    Oracle 反键索引/反向索引
    Ajax基础2
    DOM高级
    面向对象--高级
    面向对象---中级
    面向对象-初级
  • 原文地址:https://www.cnblogs.com/smallteeth/p/9936315.html
Copyright © 2020-2023  润新知