ReactNative基础篇(1)语法、布局、组件通信

•1.1语法

•ES6语法:ECMAScript6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言

•参考网站:http://es6.ruanyifeng.com/#docs/intro

•1.2布局

    •特点:

        •1)在React

            Native中布局采用的是FleBox(弹性框)进行布局。

        •2)像素无关,在React

            Native中尺寸是没有单位的,它代表了设备独立像素。

        •3)React

            Native中的FlexBox和WebCSS上FlexBox工作方式是一样的。但有些地方还是有些出入的。

1.2.1ReactNative所支持的Flex属性(父容器)

    •1)父容器属性

        •flexDirection enum('row', 'column','row-reverse','column-reverse')

        •flexWrapenum('wrap',nowrap')

        •justifyContentenum('flex-start','flex-end', 'center', 'space-between', 'space-around')

        •alignItemsenum('flex-start','flex-end', 'center', 'stretch')

    •2)主轴与侧轴:flexDirection是row时,主轴即水平方向的轴线,可以理解成横轴,侧轴垂直于主轴,可以理解为竖轴。flexDirection是column时主侧轴刚好相反

1.2.2Flex属性介绍

    •1)flexDirection

        •row:从左向右依次排列

        •row-reverse:从右向左依次排列

        •column(default):默认的排列方式,从上向下排列

        •column-reverse:从下向上排列

flexDirection

    •2)flexWrap属性定义了子元素在父视图内是否允许多行排列,默认为nowrap。

        •nowrapflex的元素只排列在一行上,可能导致溢出。

        •wrap

        flex的元素在一行排列不下时,就进行多行排列。

flexWrap

    •3)justifyContent定义了浏览器如何分配顺着父容器主轴的弹性(flex)元素之间及其周围的空间,默认为flex-start。

        •flex-start(default)从行首开始排列。每行第一个弹性元素与行首对齐,同时所有后续的弹性元素与前一个对齐。

        •flex-end从行尾开始排列。每行最后一个弹性元素与行尾对齐,其他元素将与后一个对齐。

        •center伸缩元素向每行中点排列。每行第一个元素到行首的距离将与每行最后一个元素到行尾的距离相同。

        •space-between在每行上均匀分配弹性元素。相邻元素间距离相同。每行第一个元素与行首对齐,每行最后一个元素与行尾对齐。

        •space-around在每行上均匀分配弹性元素。相邻元素间距离相同。每行第一个元素到行首的距离和每行最后一个元素到行尾的距离将会是相邻元素之间距离的一半。

justifyContent

    •4)alignItems以与justify-content相同的方式在侧轴方向上将当前行上的弹性元素对齐,默认为stretch

        •flex-start元素向侧轴起点对齐。

        •flex-end元素向侧轴终点对齐。

        •center元素在侧轴居中。如果元素在侧轴上的高度高于其容器,那么在两个方向上溢出距离相同。

        •stretch弹性元素被在侧轴方向被拉伸到与容器相同的高度或宽度。

alignItems

1.2.3子容器Flex属性

•alignSelfenum('auto','flex-start', 'flex-end', 'center', 'stretch')

•flexnumber

    •1)alignSelf以属性定义了flex容器内被选中项目的对齐方式。注意:alignSelf属性可重写灵活容器的alignItems属性。

        •auto(default)元素继承了它的父容器的align-items属性。如果没有父容器则为"stretch"。

        •stretch元素被拉伸以适应容器。

        •center元素位于容器的中心。

        •flex-start元素位于容器的开头。

        •flex-end元素位于容器的结尾。

alignSelf

    •2)flex定义了一个可伸缩元素的能力,默认为0。

flex

1.2.4其他布局 in React Native

    •1)视图边框

        •borderBottomWidthnumber 底部边框宽度

        •borderLeftWidthnumber左边框宽度

        •borderRightWidthnumber 右边框宽度

        •borderTopWidthnumber顶部边框宽度

        •borderWidthnumber边框宽

        •borderColor个方向边框的颜

        •borderColor边框颜色

    •2)尺寸

        •widthnumber

        •height

        number

    •3)外边距

        •margin

        number 外边距    

        •marginBottomnumber下外边距

        •marginHorizontalnumber左右外边距

        •marginLeftnumber左外边距

        •marginRightnumber右外边距

        •marginTopnumber上外边距

        •marginVerticalnumber上下外边距

    •4)内边距

        •padding        

        number 内边距

        •paddingBottomnumber下内边距

        •paddingHorizontalnumber左右内边距

        •paddingLeftnumber做内边距

        •paddingRightnumber右内边距

        •paddingTopnumber上内边距

        •paddingVerticalnumber上下内边距

   •5)定位(position)

        •absolute:生成绝对定位的元素,元素的位置通过"left","top", "right" 以及"bottom"属性进行规定。

        •relative:生成相对定位的元素,相对于其正常位置进行定位。"left:20"会向元素的LEFT位置添加20像素。

•1.3组件生命周期与通信

    •1.3.1生命周期

        •所谓生命周期,就是一个对象从开始生成到最后消亡所经历的状态,理解生命周期,是合理开发的关键

        参考:https://www.jianshu.com/writer#/notebooks/28735495/notes/32625503

    •1.3.2组件间通信

        •1)组件之间有三种可能的关系

            •父组件向子组件通信

            •子组件向父组件通信

            •非父子组件之间的传值

        •2)父组件向子组件通信

            •父组件向子组件传值

            •通过props传递

                在父组件中name='我是父组件向子组件传递的参数'

            •在子组件中通过this.props.name获取

            •父组件向子组件传递方法

            •与传递参数方法相同,通过props方法这样传递test={this.onParentClick1}

            •在子组件中触发这个方法this.props.test();

    •3)子组件向父组件通信

        •子组件向父组件传值

        •在子组件state中定义一个参数this.state= {name : '我是子组件向父组件传递的参数'};

        •在父组件中给子组件绑定ref,<Children ref="children"/>

        •在父组件中获取子组件的state,如this.refs.childern.state.name

        •子组件向父组件传递方法

        •同样通过ref来获得,前两步与传参方法相同。

            获取方法的方式也同样this.refs.childern.onChildenCilck2();

    •4)非父子组件之间的传值

        •组件之间无关联的形式与子组件向父组件传值的方式相同

        •通过ref给组件标记一个名字,同样通过this.refs.***.state/function方法相互调用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容

  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 4,487评论 0 26
  • 移动开发基本知识点 一.使用rem作为单位 html { font-size: 100px; } @media(m...
    横冲直撞666阅读 3,466评论 0 6
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,748评论 1 92
  • 学会使用CSS选择器熟记CSS样式和外观属性熟练掌握CSS各种选择器熟练掌握CSS各种选择器熟练掌握CSS三种显示...
    七彩小鹿阅读 6,311评论 2 66
  • 一款好的APP离不了一个漂亮的布局,本文章将向大家分享React Native中的布局方式FlexBox。在Rea...
    小熊_c37d阅读 7,808评论 2 10