zoukankan      html  css  js  c++  java
  • React Native商城项目实战03

    1.在Home目录下新建首页详细页HomeDetail.js

    /**
     * 首页详情页
     */
    import React, { Component } from 'react';
    import {
        AppRegistry,
        StyleSheet,
        Text,
        View,
        TouchableOpacity
    } from 'react-native';
    
    // ES5
    var HomeDetail = React.createClass({
        render() {
            return (
                <View style={styles.container}>
                    <TouchableOpacity onPress={()=>{this.popToHome()}}>
                        <Text style={styles.welcome}>
                            HomeDetail
                        </Text>
                    </TouchableOpacity>
                </View>
            );
        },
    
        // 返回首页
        popToHome(){
            this.props.navigator.pop();
        }
    });
    
    const styles = StyleSheet.create({
        container: {
            flex: 1,
            justifyContent: 'center',
            alignItems: 'center',
            backgroundColor: 'red',
        },
        welcome: {
            fontSize: 20,
            textAlign: 'center',
            margin: 10,
        },
    });
    
    // 输出
    module.exports = HomeDetail;
    

    2.从Home.js跳转到HomeDetail.js,修改Home.js:

    /**
     * 首页
     */
    import React, { Component } from 'react';
    import {
        AppRegistry,
        StyleSheet,
        Text,
        View,
        TouchableOpacity
    } from 'react-native';
    
    /*======导入外部组件类======*/
    var HomeDetail = require('./HomeDetail');
    
    
    // ES5
    var Home = React.createClass({
        render() {
            return (
                <View style={styles.container}>
                    <TouchableOpacity onPress={()=>{this.pushToDetail()}}>
                        <Text style={styles.welcome}>
                            Home
                        </Text>
                    </TouchableOpacity>
                </View>
            );
        },
    
        // 跳转到首页详细页
        pushToDetail(){
            this.props.navigator.push({
                component:HomeDetail,   // 要跳转过去的组件
                title:'首页详细页'
            });
        }
    });
    
    const styles = StyleSheet.create({
        container: {
            flex: 1,
            justifyContent: 'center',
            alignItems: 'center',
            backgroundColor: '#F5FCFF',
        },
        welcome: {
            fontSize: 20,
            textAlign: 'center',
            margin: 10,
        },
    });
    
    // 输出
    module.exports = Home;
    

    3.在Main.js给首页的tab设置Navigator

    /**
     * 主页面
     */
    import React, { Component } from 'react';
    import {
        AppRegistry,
        StyleSheet,
        Text,
        View,
        Image,
        Platform, // 判断运行平台
    } from 'react-native';
    
    /*=============导入外部组件类==============*/
    import TabNavigator from 'react-native-tab-navigator';
    import CustomerComponents, { Navigator } from 'react-native-deprecated-custom-components';
    
    var Home = require('../Home/Home');
    var Shop = require('../Shop/Shop');
    var Mine = require('../Mine/Mine');
    var More = require('../More/More');
    
    // ES5
    var Main = React.createClass({
        // 初始化函数(变量是可以改变的,充当状态机的角色)
        getInitialState(){
            return{
                selectedTab:'home' // 默认选中的tabBar
            }
        },
    
        render() {
            return (
                <TabNavigator>
                    {/*--首页--*/}
                    <TabNavigator.Item
                        title="首页"
                        renderIcon={() => <Image source={{uri:'icon_tabbar_homepage'}} style={styles.iconStyle} />}
                        renderSelectedIcon={() => <Image source={{uri:'icon_tabbar_homepage_selected'}} style={styles.selectedIconStyle} />}
                        badgeText="1"
                        selected={this.state.selectedTab === 'home'}
                        onPress={() => this.setState({ selectedTab: 'home' })}
                    >
                        <Navigator
                            initialRoute={{name: '首页', component:Home}}
                            renderScene={(route, navigator) =>{
                                let Component = route.component;
                                return <Component {...route.passProps} navigator={navigator} />
                            }}
                        />
                    </TabNavigator.Item>
                    {/*--商家--*/}
                    <TabNavigator.Item
                        title="商家"
                        renderIcon={() => <Image source={{uri:'icon_tabbar_merchant_normal'}} style={styles.iconStyle} />}
                        renderSelectedIcon={() => <Image source={{uri:'icon_tabbar_merchant_selected'}} style={styles.selectedIconStyle} />}
                        badgeText="1"
                        selected={this.state.selectedTab === 'shop'}
                        onPress={() => this.setState({ selectedTab: 'shop' })}
                    >
                        <Shop />
                    </TabNavigator.Item>
                    {/*--我的--*/}
                    <TabNavigator.Item
                        title="我的"
                        renderIcon={() => <Image source={{uri:'icon_tabbar_mine'}} style={styles.iconStyle} />}
                        renderSelectedIcon={() => <Image source={{uri:'icon_tabbar_mine_selected'}} style={styles.selectedIconStyle} />}
                        badgeText="1"
                        selected={this.state.selectedTab === 'mine'}
                        onPress={() => this.setState({ selectedTab: 'mine' })}
                    >
                        <Mine />
                    </TabNavigator.Item>
                    {/*--更多--*/}
                    <TabNavigator.Item
                        title="更多"
                        renderIcon={() => <Image source={{uri:'icon_tabbar_misc'}} style={styles.iconStyle} />}
                        renderSelectedIcon={() => <Image source={{uri:'icon_tabbar_misc_selected'}} style={styles.selectedIconStyle} />}
                        badgeText="1"
                        onPress={() => this.setState({ selectedTab: 'more' })}
                        selected={this.state.selectedTab === 'more'}
                    >
                        <More />
                    </TabNavigator.Item>
                </TabNavigator>
            );
        }
    });
    
    const styles = StyleSheet.create({
        iconStyle:{
             Platform.OS === 'ios' ? 30 : 25,
            height:Platform.OS === 'ios' ? 30 : 25,
        },
        selectedIconStyle:{
            Platform.OS === 'ios' ? 30 : 25,
            height:Platform.OS === 'ios' ? 30 : 25,
        },
    });
    
    // 输出
    module.exports = Main;
    

    4.效果图

  • 相关阅读:
    hbase删除标记和注意事项
    马上拥有一台自己的云服务器
    在 Ubuntu 开启 GO 程序编译之旅
    在 Ubuntu 上安装 Protobuf 3
    功能设计中技术人员之惑
    关于数据可视化页面制作
    快速响应请求浅谈
    自定义一个代码耗时计数工具类
    一种极简的异步超时处理机制设计与实现(C#版)
    百度地图API图标、文本、图例与连线
  • 原文地址:https://www.cnblogs.com/crazycode2/p/7302128.html
Copyright © 2011-2022 走看看