您的位置:首页 > Web前端 > React

iOS开发——React Native入门总结

2015-11-23 09:39 633 查看
        一个月没写博客,期间都在忙碌地学习中。深刻地体会到,代码看得再多,没有写过的话,真枪实战的时候还是不会写。这一个月做了一些小demo,导师没让自己做太多的活,很多时间都是在学习,一个月的时间里,一半在写OC,另一半在写JSX(所谓的在JS里写XML)。

        越学习,对编程的理解就会越深刻。学习React Native 的动机是公司的项目需要,而且已经有大牛踩过坑,我再接着学的话有他们的基础,不用在一些细小的、简单的问题上浪费大量的时间。在学的过程中,认识到英语真的非常重要,还好自己英语不算糟糕,偶尔不懂的就查一查单词。看第一手的资料真心舒爽,当我去看极客学院的React Native的翻译时,我竟然看不懂,语句逻辑基本是机器翻译,与其遭受机器翻译的折磨,不如自己啃完官方的文档,虽然慢,但是我有耐心。

        下面是对做项目以来遇到的语法问题的记录和体会

1、在ReactNative的官方文档中,有说过React的组件依靠两种属性来确定,一个是props,一般由外部传入,一个是state,其实就是组件的状态机,组件的状态可以通过setState来改变,并触发一次render。 但是我看到了也有一种写法是直接给state赋值,即如果state中有属性a,那么可以这么赋值:this.state.a = 20;  当时就在想这么做会不会触发render,经实验过后发现是不会的,经此可确认只有setState才可以。

2、DeviceEventEmitter.js  ReactNative目前支持的API相对来说是很少的,没法和OC或Swift比,所以当我想用到通知机制的时候,发现RN(React Native)中没有,那怎么办?只能通过Native Module去写,官方有例子,即我们可以通过桥接来建立OC与JSX的关系,使得在JSX中也能用到OC中得功能。DeviceEventEmitter.js这个文件就为我们写好了基本的架构,我们只需要具体实现即可,怎么实现看具体的业务需要。

3、onPress、onFocus

      onPress指被按下这个动作,可以用在各种组件(component)中,常用的有View,Text,不过一般都会在最外层加TouchableOpacity,或者TouchableHighlight,RN中没有提供Button这样的空间,所有需要提供交互的组件中都可以加一个TouchableXXX。一般的用法都是onPress= {()=>{}}

      onFocus,focus是聚焦的意思,接触到的案例是输入框被选中时的效果,onFocus的用法和onPress也很像。

4、navigator.push

      RN中提供了一种navigatorIOS的官方组件来实现导航栏。其中有个概念叫router(路由),这个路由是个对象,其中可以包含各种各样的属性,不过最重要的是提供组件component和传递属性passProps。

5、mixin是什么
react回避子类组件,这样会带来一个问题,大量重复的代码会带到组件中去,这样的话我们用mixin来解决,将同样相同的代码包装成一个mixin,然后导入模板,在组件里面声明一个mixins属性来调用。
需要强调一点,mixin在ES6中不支持……!!!

7、constructor和getInitState的区别
constructor初始化,getInitState其实和constructor内部的this.state = {} 作用是一样的。constructor是ES6的新语法,建议大家都用ES6的语法来写。

8、refs到底是个什么玩意
     组件 MyComponent 的子节点有一个文本输入框,用于获取用户的输入。这时就必须获取真实的 DOM 节点,虚拟 DOM 是拿不到用户输入的。为了做到这一点,文本输入框必须有一个 ref 属性,然后 this.refs.[refName] 就会返回这个真实的 DOM 节点。

9、react-native是怎样实现远程更新代码的?
简而言之,就是应用启动时,发一个请求到服务器,带上应用本地js文件包版本号,和服务器上的进行匹配之后看是否需要更新,最主要的参数就是版本号。
如果需要更新则下载一个js文件包的更新包到本地。本地的应用会根据苹果提供的javascriptCore引擎去调用最新的JS代码。

      在学习的过程中,感受到了javascript的魅力,高级语言真是特别友好,让我想起了以前写C语言程序的日子,真是每天都搞得自己头晕脑胀,C语言毕竟只是在汇编基础上封装一层,理解起来很费劲。

      老实说我javascript只看了两天的语法,ReactNative只看了三天,基本上都是官方文档,其实入门和上手确实很简单,但是后面工程的代码量上去了,也会面临很多难题的。

      这里推荐一个链接,腾讯bugly的React介绍,写得很好。http://mp.weixin.qq.com/s?__biz=MzA3NTYzODYzMg==&mid=401107957&idx=1&sn=200418877771f656c1a0ab33ad407516&scene=23&srcid=1119DucWKVggEUtj7vwK5kAX#rd
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ReactNative ios开发