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

    1.自定义可复用的cell 
    More/CommonCell.js:

    /**
     * 自定义可复用的cell
     */
    import React, { Component } from 'react';
    import {
        AppRegistry,
        StyleSheet,
        Text,
        View,
        Image,
        TouchableOpacity,
        Platform,
        Switch
    } from 'react-native';
    
    // ES5
    var CommonCell = React.createClass({
        getDefaultProps(){
            return{
                title:'', // cell标题文字
                isSwitch:false, // 是否展示开关
                rightTitle:'', //cell右侧标题
            }
        },
    
        getInitialState(){
            return{
                isOn:false,
            }
        },
    
        render() {
            return (
                <TouchableOpacity onPress={()=>{alert('点击了')}}>
                    <View style={styles.container}>
                        <Text>{this.props.title}</Text>
                        {this.renderRightView()}
                    </View>
                </TouchableOpacity>
            );
        },
    
        // cell右侧指示图标视图
        renderRightView(){
            if(this.props.isSwitch){
               return(
                   <Switch value={this.state.isOn == true} onValueChange={()=>{this.setState({isOn:!this.state.isOn})}} />
               )
            }else{
                return(
                    <View style={{flexDirection:'row',alignItems:'center'}}>
                        {this.renderRightTitle()}
                        <Image source={{uri:'icon_cell_rightArrow'}} style={{8,height:13}} />
                    </View>
                )
            }
        },
    
        // cell右侧标题视图
        renderRightTitle(){
            if(this.props.rightTitle.length > 0){
                return(
                    <Text style={{color:'gray',marginRight:10}}>{this.props.rightTitle}</Text>
                )
            }
        },
    });
    
    const styles = StyleSheet.create({
        container: {
            backgroundColor: 'white',
            height:Platform.OS == 'ios' ? 40 : 30,
            borderBottomColor:'#ddd',
            borderBottomWidth:0.5,
            flexDirection:'row',
            justifyContent:'space-between',
            // 垂直居中
            alignItems:'center',
            paddingLeft:10,
            paddingRight:10,
        },
    });
    
    // 输出
    module.exports = CommonCell;
     
    

    2.在More.js里使用cell:

    /**
     * 更多
     */
    import React, { Component } from 'react';
    import {
        AppRegistry,
        StyleSheet,
        Text,
        View,
        Image,
        TouchableOpacity,
        Platform,
        ScrollView
    } from 'react-native';
    
    /*======导入外部组件类======*/
    var CommonCell = require('./CommonCell');
    
    // ES5
    var More = React.createClass({
        render() {
            return (
                <View style={styles.container}>
                    {/*导航条*/}
                    {this.renderNavBar()}
                    <ScrollView>
                        <View style={{marginTop:20}}>
                            <CommonCell
                                title="扫一扫"
                            />
                        </View>
                        <View style={{marginTop:20}}>
                            <CommonCell
                                title="省流量模式"
                                isSwitch={true}
                            />
                            <CommonCell
                                title="扫一扫"
                            />
                            <CommonCell
                                title="扫一扫"
                            />
                            <CommonCell
                                title="扫一扫"
                            />
                            <CommonCell
                                title="清空缓存"
                                rightTitle="1.99M"
                            />
                        </View>
                        <View style={{marginTop:20}}>
                            <CommonCell
                                title="省流量模式"
                                isSwitch={true}
                            />
                            <CommonCell
                                title="扫一扫"
                            />
                            <CommonCell
                                title="扫一扫"
                            />
                            <CommonCell
                                title="扫一扫"
                            />
                            <CommonCell
                                title="扫一扫"
                            />
                        </View>
                    </ScrollView>
                </View>
            );
        },
    
        // 导航条
        renderNavBar(){
            return(
                <View style={styles.navOutViewStyle}>
                    <Text style={{color:'white',fontSize:16,fontWeight:'bold'}}>更多</Text>
                        <TouchableOpacity onPress={()=>{alert('点击了')}} style={styles.rightViewStyle}>
                            <Image source={{uri:'icon_mine_setting'}} style={styles.navImgStyle} />
                        </TouchableOpacity>
                </View>
            )
        }
    });
    
    const styles = StyleSheet.create({
        // 导航条视图
        navOutViewStyle:{
            height:Platform.OS === 'ios' ? 64 : 44,
            backgroundColor:'rgba(255,96,0,1)',
            // 主轴方向
            flexDirection:'row',
            // 侧轴对齐方式 垂直居中
            alignItems:'center',
            // 主轴方向居中
            justifyContent:'center',
        },
        // 导航栏右侧
        rightViewStyle:{
            // 绝对定位
            position:'absolute',
            right:10,
            bottom:15,
        },
        // 导航条上图片
        navImgStyle:{
            Platform.OS === 'ios' ? 28 : 24,
            height:Platform.OS === 'ios' ? 28 : 24,
        },
        container: {
            flex: 1,
            backgroundColor: '#e8e8e8',
        },
        welcome: {
            fontSize: 20,
            textAlign: 'center',
            margin: 10,
        },
    
    });
    
    // 输出
    module.exports = More;
    

    3.效果图

  • 相关阅读:
    程序员面试金典题解
    Leetcode 解题报告
    常用小算法
    BestCoder 百度之星2016
    jQuery 删除或是清空某个HTML元素。
    dataTable 默认排序设定
    jquery tableExport 插件导出excel (无乱码) 比较简单的表格
    php 根据周数获取当周的开始日期与最后日期
    thinkphp5使用load和use引入第三方类
    判断checkbox是否选中
  • 原文地址:https://www.cnblogs.com/crazycode2/p/7348644.html
Copyright © 2011-2022 走看看