加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 20:40:32 所属栏目:百科 来源:网络整理
导读:对于不需要传统tab切换的app项目 实现简单登录 跳转 效果图如下 在登录的时候 应用的是?createSwitchNavigator 这个api可以屏蔽调android 的返回键? import { createSwitchNavigator,createStackNavigator } from ‘react-navigation‘ ; // 引入路由页面 im

对于不需要传统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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读