【REACT NATIVE 系列教程之三】函数绑定与FLEXBOX是用好REACT的基础

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/react-native/2222.html

Himi在写React 时主要遇到两个知识点觉得很有必要跟大家一起回顾下。

  1. 函数绑定
  2. FlexBox 布局

   一:函数绑定

首先来看一段代码片段:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

constructor(props) {

      super(props);

      this.state = {

         myName:'I am MyName!',

      };

  }

componentWillMount() {

    this.state.myName='cwm';

  }

  

  testFun1(){

    this.state.myName='tf1';

    Alert.alert('Himi', ' testFun1 ');

    

  }

  testFun2(){

    Alert.alert('Himi', ' testFun2 ');

  }

在state中声明了myName

constructor: 组件的构造函数

componentWillMount : 组件预加载前调用的生命周期函数

testFun1、 testFun2 :是两个自定义的函数。

 

继续看render中的一段:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<TouchableHighlight

          underlayColor='#4169e1'

          onPress={this.testFun1}  

          >

            <Image

            source={require('./res/himi.png')}

            style={{width: 70, height: 70}}

            />

        </TouchableHighlight>

 

        <TouchableHighlight

          underlayColor='#4169e1'

          onPress={this.testFun2}  

          >

            <Image

            source={require('./res/himi.png')}

            style={{width: 70, height: 70}}

            />

        </TouchableHighlight>

这里创建了两个图片组件且都添加了触摸组件,分别绑定自定义的函数testFun1 与 testFun2

 

当我们点击第一个图片时会报错,运行效果如下:(点击查看动态图)

    

错误是说this没有undefined,原因是因为当想在自定义的函数中使用this,那么需要进行函数绑定。

函数绑定: 函数进行 bind(绑定) 可以确保在函数中的 this 作为组件实例的引用,也就是说你想在自定义的函数中使用this,那么请先进行将此函数bind(this)

那么细心的童鞋会发现!为什么在 componentWillMount 函数中也使用了this却通过了?因为 componentWillMount 是组件的生命周期函数。

那么常用的函数绑定方式有如下几种:

1.  在生命周期函数中绑定,如下:

1

this.testFun1 = this.testFun1.bind(this)

 

2. 使用的地方直接绑定,如下:

1

onPress={this.testFun1.bind(this)}

 

3. 直接在使用的地方直接lambda,更方便   如下:

1

2

3

4

onPress={()=>{

     this.state.myName='tf1';

     Alert.alert('Himi', ' testFun1 ');

}}

 

   一:FlexBox 布局

关于CSS 的FlexBox 本篇不重新赘述了,一来是因为网上一搜一大把的教程,二来不一定有别人写的仔细 – -… 。但是,Himi这里推荐两个链接,学习足以:

1. 详细介绍与分析:  http://www.tuicool.com/articles/vQn6ZrU

2. 直观的教程:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool

 

时间: 2024-11-28 18:38:42

【REACT NATIVE 系列教程之三】函数绑定与FLEXBOX是用好REACT的基础的相关文章

【REACT NATIVE 系列教程之二】创建自定义组件&amp;&amp;导入与使用示例

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/react-native/2219.html 在上一篇  [REACT NATIVE 系列教程之一]触摸事件的两种形式与四种TOUCHABLE组件详解 中的最后介绍了如何使用Touchable的四种组件进行监听触摸事件.  那么紧接着我们利用Touchable来包装一个带图片的Button组件,且设计成可接受很多自定义参数. 一:创建我们自定

【REACT NATIVE 系列教程之一】触摸事件的两种形式与四种TOUCHABLE组件详解

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/react-native/2203.html 本文是RN(React Native)系列教程第一篇,当然也要给自己的群做个广告:   React Native @Himi :126100395  刚创建的群,欢迎一起学习.讨论.进步. 本文主要讲解两点: 1.   PanResponder:触摸事件,用以获取用户手指所在屏幕的坐标(x,y)或

【REACT NATIVE 系列教程之四】刷新组件RENDER(重新渲染)的三种方式详解

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/react-native/2242.html 开发过游戏的都应该很清楚,"刷屏"是多么的重要.其实开发应用也如此,当组件的数据被修改后,如何及时更新组件呈现出最新的数据与效果一样至关重要. 那么这里Himi大概讲三种常用的方式: this.setState()  [最为常用] 这是在事件处理函数中和请求回调函数中触发 UI 更新的主

React Native系列(6) - 编译安卓私有React-Native代码

  为何要自己编译React Native安卓私有代码 我们在开发中遇到一个HTTP2的问题,React Native安卓客户端在和HTTP2支持的服务器通讯的过程中会有crash,见 React-Native HTTP2 issue How to build private build 由于时间紧急,发布期限已经拖了好久了,没法等待官方解决方案,只能在本地做修复然后发布. 编译私有React-Native 针对android,React-Native有官方指导说明. 过程中遇到不少坑,记录如下

《React Native移动开发实战》一一第1章 为什么要学习React Native

第1章 为什么要学习React Native 无论读者是移动平台开发者,还是Web前端开发者,想必对现在"大红大紫"的React Native都有所耳闻.那么,除了"乘着Facebook这棵大树好乘凉"的优势之外,React Native到底是何方"神圣",有什么令大家"趋之若鹜"的优点呢?下面带着这样的好奇,来随本书一探究竟吧! 本章主要内容有: React Native与React.js的对比. 为什么说React Nat

《React Native移动开发实战》一一第2章 全局解析React Native开发的基础

第2章 全局解析React Native开发的基础 技术 在第1章搭建好React Native开发环境之后,我们开发了第一个React Native应用.虽然其功能比较简单,但却向着学习React Native开发迈开了一大步,意味着读者能够独立完成一个React Native应用的开发. 从本章开始,我们将从零开始开发一个功能更加完备.强大的React Native应用.还在等什么?赶紧进入状态吧! 本章主要内容有: 掌握版本控制工具Git的使用. 了解JSX解决方案. 熟悉React Na

LNMP系列教程之三:SSH安装WordPress博客

在之前的文章中,"LNMP系列教程之二:删除站点及域名绑定",然后我们就需要传程序建站.我们可以利用WinSCP工具直接向我们的对应的站点目录中传程序,然 后添加数据库安装网站.但是今天我分享的这个方法是比较先进的SSL远程下载程序,这样的好处是万一我们用的CMS程序较大,可以直接下载至VPS中,省 的我们再去FTP传.用命令操作一来可以显得牛X,二来可以节省时间. 首先,用Putty登陆我们的VPS,到我们的站点目录下,今天我以安装wordpress建立博客为例; 其次,输入远程下载

LLsMP系列教程之三:Litespeed开启htaccess伪静态方法

如果我们的VPS是用LLsMP架构的话,默认的htaccess伪静态是支持比如wordpress,discuz等常规的CMS.但是有些时候,有些程序我们在安装后,或者说后台启动了伪静态功能,前台点击页面文件并没有达到我们的效果,而是文件显示404错误页面.这主要的问题是我们的伪静态没有开启,我们需要开启Litespeed开启htaccess伪静态.到底如何操作呢? 第一步,登陆我们的Litespeed面板,一般网址为 "你的VPS ip:7080",用我们当初搭建VPS的时候设置的用户

Microsoft .Net Remoting系列教程之三:Remoting事件处理全接触_自学过程

前言:在Remoting中处理事件其实并不复杂,但其中有些技巧需要你去挖掘出来.正是这些技巧,仿佛森严的壁垒,让许多人望而生畏,或者是不知所谓,最后放弃了事件在Remoting的使用.关于这个主题,在网上也有很多讨论,相关的技术文章也不少,遗憾的是,很多文章概述的都不太全面.我在研究Remoting的时候,也对事件处理发生了兴趣.经过参考相关的书籍.文档,并经过反复的试验,深信自己能够把这个问题阐述清楚了. 本文对于Remoting和事件的基础知识不再介绍,有兴趣的可以看我的系列文章,或查阅相关