专栏名称: Goyakod
iOS工程师
目录
相关文章推荐
人力资源管理  ·  朋友面试谈薪报价2w,HR非得压到1.9w, ... ·  5 天前  
51好读  ›  专栏  ›  Goyakod

React Native 初体验

Goyakod  · 掘金  ·  · 2017-12-17 08:56

正文

2015年9月底开始正式接触React native,公司的ios团队用它写了一个安卓项目之后,到上周,公司彻底停止了RN的使用。

至于我们为什么停止使用RN,原因大致有两个:

一、RN对安卓的支持还不够好,而我们又恰恰选择尝试用RN来搞安卓端。

二、公司眼前的项目较多,把所有项目全部停用原生改用RN也不太实际。

尽管公司目前暂时停止了RN这个技术栈,但是我个人不会停止对RN的关注。

React Native 中文网

      环境配置就不赘述了,关于RN的一些网站里的文档已经相当详细了。只是所有文档基本都告诉你安装Watchman和Flow,实际只是推荐你安装,所以不安装完全不影响你的开发,而且在RN的更新版本中有的时候安装了Watchman反而会导致一些不必要的麻烦。这里提一下,要不要安装自己取舍吧。

       熟悉了RN的开发流程之后,再回到原生,多少会有不适感,其主要原因是RN的组件化真的有很多优点,适应之后就觉得各种好用。另一个原因就是调试效率高,基本晃一晃手机就能看到新代码的效果,这个是原生所不能的。

       组件化和Flex布局是RN给我印象最深的,哦,还有状态State。文档基本涵盖了主流的移动端控件了,只是在RN不再叫控件而是组件。CSS样式的布局用Flex基本可以解决所有的需求了。至于状态值改变,render重新渲染这个点,确实方便。

印象深刻的:

      RN Navigator教程

      Navigator的反向传值,需要在设置initialRoute的时候同时用类似 " ... parameters " 的方式传参,下一级界面可以直接通过this.props.parameters拿到从上个页面传过来的值。至于反向传值,也是通过parameters只是传过去的是一个function,这点有点像ios里的Block。如果返回之后需要重新渲染页面的话那就得在function里面使用setState()了,或者通过组件的生命周期在ComponentShouldUpdate里面重新刷新,当然这个方法还有bug,并不是每次都成功。

    上段提到的组件的生命周期,这篇博客会帮到你:React Native中组件的生命周期   

     ES5和ES6写法对照表