混合开发的大趋势之一React Native(Hello Horld+简单ViewGroup)

这篇博客介绍了如何在React Native中创建一个简单的Hello World应用,并通过修改CSS属性如alignContent、alignItems和flexDirection来控制组件的布局。作者从官方教程出发,展示了如何在iOS和Android平台上构建跨平台应用,同时提供了代码示例和参考资料。
摘要由CSDN通过智能技术生成

转载请注明出处:王亟亟的大牛之路

强行安利,你值得拥有:https://github.com/ddwhan0123/Useful-Open-Source-Android

最近都在张罗新工作的事,整个周末也没怎么学习,感觉我已经是个咸鱼了,早上忙着去体检啥的,下午就补一篇出来吧,为了比较合理的体验,学习的教程走的是http://facebook.github.io/react-native/docs官方的途径,OK,废话不多 GOGOGO

上一篇,我们把环境搭建了下也跑了个事例Demo,那我们来看看那个页面是从何而起

文本编辑器打开以下目录找到

这里写图片描述

index.ios.js

这就是我们主页面的内容了,我们把它改成Hello World看看

import React, { Component } from 'react';
import { AppRegistry, Text } from 'react-native';



class WjjPro extends Component {
    render(){
        return(
            <Text>Hi Wjj!</Text>
        );
    }
}


AppRegistry.registerComponent('WjjPro', () => WjjPro);

这里写图片描述

我们的Hello World就呈现在这里了,但是因为没有 CSS等内容他在默认的左上角。

那我们给他写一个CSS(之前做过 后台Web,但是JS CSS 什么的几乎是小白,和大家一起进步吧,会的老司机 带我!!!)

const styles=StyleSheet.create({
    container:{
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
    }
});

效果如下:
这里写图片描述

使用 alignContent 属性对齐交叉轴上的各项(垂直)

flex-start  默认值。项目位于容器的开头。
flex-end    项目位于容器的结尾。
center  项目位于容器的中心。
space-between   项目位于各行之间留有空白的容器内。
space-around    项目位于各行之前、之间、之后都留有空白的容器内。
initial 设置该属性为它的默认值。
inherit 从父元素继承该属性。

参考地址:http://webkkl.com/obj-style/justifycontent.php

align-items 属性定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式。

这两个定义了我们的控件在整个View的中间


stretch 默认值。项目被拉伸以适应容器。 
center  项目位于容器的中心。  
flex-start  项目位于容器的开头。  
flex-end    项目位于容器的结尾。  
baseline    项目位于容器的基线上。 
initial 设置该属性为它的默认值。
inherit 从父元素继承该属性。

参考地址:http://www.runoob.com/cssref/css3-pr-align-items.html

flex类似于安卓的 weight “权重“的概念我们来试验下。

我们在父控件View里再添加一个Text控件,如下

class WjjPro extends Component {
    render(){
        return(
            <View style={styles.container}>
                <Text style={styles.style2}>Hi Wjj!</Text>
                <Text style={styles.style3}>Hello Wjj!</Text>
            </View>
        );
    }
}

他们3个视图都有各自的style,我们再来看下他们的css

const styles=StyleSheet.create({
    container:{
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
    },style2:{
        backgroundColor: '#EEFCAF',
        flex: 2,
    },style3:{
        backgroundColor: '#F5FCFF',
        flex: 3,
    }
});

这里写图片描述

很明显 Hello Wjj比 Hi Wjj更长,但是Hi Wjj被挡了,我们把他们整个控件向下挪一点,像这样

这里写图片描述

只要在 那2个控件加margin: 20,就行了

接着再来说下 flexDirection

flexDirection在React-Native中只有两个属性,一个是row(横向伸缩)和column(纵向伸缩)。

加以操作,我们可以实现多”ViewGroup”的行为,像这样

这里写图片描述

代码修改如下

class WjjPro extends Component {
    render(){
        return(
            <View style={styles.container}>
                <View style={styles.style2}>
                    <Text>Hi Wjj1!  </Text>
                    <Text>Hi Wjj2!  </Text>
                </View>
                <View style={[styles.style3,{flexDirection: 'column'}]}>
                    <Text style={styles.style3}>Hello Wjj1!</Text>
                    <Text style={styles.style3}>Hello Wjj2!</Text>
                </View>
            </View>
        );
    }
}
const styles=StyleSheet.create({
    container:{
        flex: 1,
    },style2:{
        justifyContent: 'center',
        alignItems: 'center',
        margin: 20,
        flexDirection: 'row',
        backgroundColor: '#EEFCAF',
        flex: 2,
    },style3:{
        margin: 20,
        backgroundColor: '#F5FCFF',
        flex: 5,
    }
});

我们最外层还是 1个缩放比,内部是 2:5

然后 style2是横向,style3为纵向

相关资源:http://facebook.github.io/react-native/docs/tutorial.html

项目地址:https://github.com/ddwhan0123/ReactNativeDemo

源码地址:https://github.com/ddwhan0123/ReactNativeDemo/archive/master.zip

这里写图片描述

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值