RN实战项目主页(五)

RN实战项目主页(五)

先看下效果图

底部的tab 用的一个第三方的开源库,或者想用原生的,react-navigationn 里面也有的, 传送门

本项目中用的是 react-native-tab-navigator

import React, { Component } from 'react';
import {
    Text,
    Image,
    View,
    BackAndroid,
    Platform,
} from 'react-native';

import TabNavigator from 'react-native-tab-navigator';
import Index from './Index';
import Insurance from './Insurance';
import My from './My';

/**
 * 主界面
 */



export default class Home extends Component {

    constructor(props) {
        super(props);
        this.state = {
            selectedTab: 'index',//默认选中首页
        };
    }

    render() {
        return (
            
                 }
                    renderSelectedIcon={() => }
                    onPress={() => this.setState({ selectedTab: 'index' })}>
                    {
                        
                            
                        
                    }
                
                 }
                    renderSelectedIcon={() => }
                    onPress={() => this.setState({ selectedTab: 'insurance' })}>
                    {
                        
                            
                        
                    }
                
                 }
                    renderSelectedIcon={() => }
                    onPress={() => this.setState({ selectedTab: 'my' })}>
                    {
                        
                            
                        
                    }
                
            
        );
    };
}

这里遇到的坑:

 }
                renderSelectedIcon={() => }
                onPress={() => this.setState({ selectedTab: 'index' })}>
                {
                //一定要给view 设置style flex:1  否则布局会有些问题
                    

                        //{...this.props} 属性传递过去  方便那边使用
                        
                    
                }
 

首页代码:

import React, { Component } from 'react';
import {
    StyleSheet,
    Text,
    View,
    Image,
    PixelRatio,
    TouchableWithoutFeedback,
    ToastAndroid,
    ScrollView,
    AsyncStorage,
} from 'react-native';
import PublicIndexItem from './public/PublicIndexItem';
import PublicOrderMangerLayout from './public/PublicOrderMangerLayout';
import NetUtils from '../net/NetUtils';
import OrderManager from './OrderManager';


/**
 * 首页
 */
export default class Index extends Component {

    constructor(props) {
        super(props);
    }

    componentDidMount() {
        //组件加载完毕后,在这里加载网络数据
        var url = 'http://192.168.2.112:8042/ShengDaAutoPlatform/remit!clerkDetail';
        var service = "clerkDetail";
        var userInfo;
        AsyncStorage.getItem("userInfo", (error, result) => {
            if (error) {

            } else {
                userInfo = eval('(' + result + ')');
                var params = "service=clerkDetail&pageSize=10&page=1&userId=" + userInfo.userId;
                NetUtils.post(url, service, params, (result) => {
                    ToastAndroid.show(result.resultDesc, ToastAndroid.SHORT);
                });
            }
        });
    };

    saoYisao() {
        ToastAndroid.show("扫一扫", ToastAndroid.SHORT);
    };
    shuChuanma() {
        ToastAndroid.show("输串码", ToastAndroid.SHORT);
    };
    callPhone() {
        ToastAndroid.show("打电话", ToastAndroid.SHORT);
    };

    orderManager() {
        let navigator = this.props.navigator;
        if(navigator){
            navigator.push({
                name:'订单管理',
                component:OrderManager,
                params:{
                    itemType:'4',
                },
            });
        }
    };
    orderStatistics() {
        ToastAndroid.show("订单统计", ToastAndroid.SHORT);
    };
    partnerList() {
        ToastAndroid.show("合作机构", ToastAndroid.SHORT);
    };

    render() {
        return (
            
                //toolbar
                
                    盛大商户端
                     this.callPhone()}>
                        
                    
                


                //header
                
                    
                         this.saoYisao()}>
                            
                        
                    

                    

                    
                         this.shuChuanma()}>
                            
                        
                    
                

                //scrollview
                

                    //组件化抽取,方便复用
                     this.orderManager()}>
                    

                    
                         this.orderStatistics()}>
                    

                    

                    
                         this.partnerList()}>
                        
                    

                

            

        );
    };
}

var style = StyleSheet.create({
    container: {
        flex: 1,
    },
    toolBar: {
        height: 50,
        backgroundColor: '#3f84fe',
        flexDirection: 'row',
        padding: 10,
        alignItems: 'center'
    },
    header: {
        backgroundColor: '#3f84fe',
        height: 165,
        flexDirection: 'row',
        alignItems: 'center',
    },
    scrollview: {
        backgroundColor: '#ebeaf0',
        marginBottom: 50,
    },
});

保险布局就是一个webview,忽略…

我的

import React, { Component } from 'react';
import {
    Text,
    View,
    StyleSheet,
    Image,
    ScrollView,
    PixelRatio,
    TouchableWithoutFeedback,
} from 'react-native';
import PublicMyItem from './public/PublicMyItem';

/**
 * 我的
 */
export default class My extends Component {

    constructor(props) {
        super(props);
    }

    render() {
        return (
            
                
                    我的
                

                
                    
                    
                        
                        上海美容堂汽车服务有限公司
                    
                

                
                    //组件封装,方便复用
                     alert('商户二维码')}>
                     alert('打款记录')}>
                    
                     alert('联系业务员')}>
                     alert('合作机构')}>
                     alert('关于我们')}>
                    
                     alert('意见反馈')}>
                    
                     alert('重置密码')}>
                    
                         alert('退出登录')}>
                            
                        
                    
                

            
        );
    };
}

var style = StyleSheet.create({
    container: {
        flex: 1,
    }
});

订单管理的话,是一个listview,目前没有实现加载更多功能,待研究

有问题的伙伴,记得留言哦

你可能感兴趣的:(RN)